Как подсчитать вхождения элемента в массив Swift объектов с разными условиями - PullRequest
0 голосов
/ 24 декабря 2018

Я делаю тест на содержание атрибута элемента, чтобы вычислить вхождения

для простого массива строк, например, этот пример отлично работает, когда я хочу протестировать с одним условием:

    counts[item.id] = (counts[item.id] ?? 0) + 1

однако мой вопрос заключается в том, как выполнить один и тот же тест с различными условиями, не только проверяя item.id, но я бы хотел проверить, например, также и item.email.это что-то вроде этого

 counts[item.id] = (counts[item.id]  && counts[item.email] = (counts[item.email] ?? 0) + 1

это массив, в который я добавляю значения ключа, ключ как элементы моего объекта и значения как число вхождений

вот яркий пример

    let arr = [Student, Student, Student, Student]
    var counts: [String: Int] = [:]

    for item in arr {
    counts[item.id] = (counts[item.id] ?? 0) + 1
    }


for (key, value) in counts {
    print("\(key) occurs \(value) time(s)")
}
output:

44442 occurs 1 time(s)
34434 occurs 1 time(s)
22222 occurs 2 time(s)

спасибо за помощь.

1 Ответ

0 голосов
/ 27 декабря 2018

ответ был очень прост, он был в расширении моего класса и, добавив Equatable,

extension notificationManager: Equatable {

    static func ==(lhs: notificationManager, rhs: notificationManager) -> Bool {
    return lhs.fromwho.username == rhs.fromwho.username && lhs.forwho.username == rhs.forwho.username && lhs.activity.objectId == rhs.activity.objectId
}}

, а затем я просто добавил счетчик

     for item in orignalNotifs {
            notificationManager.Notifcounts[item] = (notificationManager.Notifcounts[item]  ?? 0) + 1
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...