のすべての値は、私がtrueにすべての辞書の値をリセットする機能を作成したい、この構造更新辞書
var profiles: Dictionary<String, Bool> = ["open": true, "encrypted": false, "sound":true, "picture":false]
と辞書を持っています。それを行うための短い方法はありますか、それをループして値を1つずつ変更する必要がありますか?あなたのための
のすべての値は、私がtrueにすべての辞書の値をリセットする機能を作成したい、この構造更新辞書
var profiles: Dictionary<String, Bool> = ["open": true, "encrypted": false, "sound":true, "picture":false]
と辞書を持っています。それを行うための短い方法はありますか、それをループして値を1つずつ変更する必要がありますか?あなたのための
簡単ワンライナー:
profiles.keys.forEach { profiles[$0] = true }
この辞書の全てのキーを反復処理し、true
にそのキーの値を設定します。 $0
はforEach
クロージャ(キー)の最初の引数を表します。ループしないで、すべての値を単一の値に変更する方法はありません。
や 'profiles.keys {プロファイル偽= [キー]}'でのキーのための - だけ少し長いが、読みやすく:) –
、それはまた、クロージャを作成回避@MartinR、パフォーマンスが – Alnitak
dictionary.forEach({ (key, value) -> Void in
dictionary[key] = true
})
また別のアプローチです。この場合にのみ更新されなければならないこれらの辞書のエントリを更新..
dictionary.filter({ $0.value == false })
.forEach({ (key, _) -> Void in
dictionary[key] = true
})
この特定の猫を肌には多くの方法がありますが...
profiles.forEach { profiles[$0.0] = true }
あなたは構造体を使用していない理由は? – BallpointBen