0
NSCountedSet
をより多くのSwift
のように使用する方法を探しています(その意味は問わない)。SwiftのNSCountedSet列挙
基本的にObjective C
から直接翻訳した次のスニペットを考えてみましょう。セット内の各シンボル(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お手伝いします。次回質問を投稿するときには(例えば、私の 'Item'定義と私の' symbolDictionary'と 'symbolSet'インスタンス化のような)[最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)これは、将来の回答者があなたを手助けすることを容易にするので、あなたはsatiesfactoryの回答を得ることになる変化を増やすようになります:) – dfri
あなたの例は私のケースにかなり近かった。 'value'だけは実際には2つの' Double'プロパティの構造体ですので、いくつかの頭出しの後に '.reduce'行の始めと終わりに' 0'を置き換えて '' double'sがセットされた "zero struct" 「0」に設定する。そしてすべての作品! – Koen