Уменьшить и получить сумму в словаре, содержащем пользовательский объект на основе ключа - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть словарь var dic = [TimeInterval: [CustomObject: Double]]()

TimeInterval - это отметка времени. CustomObject - это объект со свойством id внутри (типа String). И AudioLevel это двойной. Мне удалось напечатать объект внутри с помощью:

for (key, values) in dic {
    for value in values {
        print("\(key): participant id : \(value.key.id) ... AudioLevel: \(value.value)")
    }
}

В моем примере это печатается:

1581361504.064956: participant id : id1 ... AudioLevel: 1.8426420022371925
1581361504.0642018: participant id : id2 ... AudioLevel: 0.0030890756301589217
1581361504.065456: participant id : id2 ... AudioLevel: 4.256374635644427
1581361504.061193: participant id : id1 ... AudioLevel: 1.744451095262131

Теперь я хотел бы иметь словарь, который содержит [CustomObject: Int], где Int звание участника. Здесь id2 будет первым (4.256374635644427 + 0.0030890756301589217> 1.744451095262131 + 1.8426420022371925)

Может быть, мне придется сделать уменьшение на основе id + sum уровня звука, а затем flatMap, чтобы получить мои CustomObject?

1 Ответ

1 голос
/ 10 февраля 2020
dic.forEach { print($0.value) }
...