Я ищу способ использовать NSCountedSet
в более чем Swift
-like way (независимо от того, что это означает).Перечисление NSCountedSet в Swift
Рассмотрите следующий фрагмент, который я в основном перевел непосредственно с Objective C
. Я перебираю каждый символ (a String
) в наборе, получаю соответствующий счетчик и просматриваю значение для этого символа в словаре. Затем я умножаю это значение на счетчик и добавляю его к сумме.
var total = 0
for symbol in symbolSet {
let count = symbolSet.count(for: symbol)
let item = symbolDictionary[symbol as! String]
let value = item?.value
total+= (count * value!)
}
Это работает, но я немного обеспокоен разворачивания, что Xcode
предложил для меня. Поэтому я пытаюсь сделать это более Swift
так, чтобы он был более безопасным без всякой разворачивания.
я начал что-то вроде этого:
symbolSet.enumerated().map { item, count in
print(item)
print(count)
}
Но рассчитывать здесь не фактический подсчет, но индекс перечисления.
Как мне двигаться вперед?
Это выглядит очень перспективным, я смогу проверить это позже этот день. – Koen
@Koen рады помочь. Рассмотрите возможность включения [минимального, полного и проверяемого примера] (http://stackoverflow.com/help/mcve) в следующий раз, когда вы отправляете вопрос (например, мое определение 'Item' и мои экземпляры' symbolDictionary' и 'symbolSet', которые я ' вы включили выше), так как это облегчит для потенциальных ответчиков, чтобы помочь вам, что, в свою очередь, увеличит изменение, которое вы получите ответ satiesfactory :) – dfri
Ваш пример был очень близок к моему делу. Только 'значение' на самом деле является структурой двух свойств« Double », поэтому после некоторого сокращения я заменил« 0 »в начале и конце строки' .reduce' с «нулевой структурой», причем оба набора '' Double '' до '0'. И все работает! – Koen