web-dev-qa-db-ja.com

Swift Dictionary [String:String] to NSMutableDictionary?

DictionaryプロパティSKSpriteNodeでタイプ[String : String]のSwift userDataを作成して割り当てようとしていますが、これにはNSMutableDictionaryが必要です。これを試みるとエラーが発生します。

'[String : String]' is not convertible to 'NSMutableDictionary'

誰かが私を正しい方向に向けることができますか?

    // USER DATA
    var dictionary: [String : String] = Dictionary()
    dictionary["Orbit"] = orbit
    dictionary["Zone"] = zone
    dictionary["Impact"] = impact
    var foundationDictionary = dictionary as NSMutableDictionary
    neoSprite.userData = foundationDictionary
10
fuzzygoat

このための組み込みのキャストはありません。ただし、代わりに、辞書を使用するNSMutableDictionaryの初期化子を使用できます。

var foundationDictionary = NSMutableDictionary(dictionary: dictionary)
33

上記の回答に対する1つの代替回答は、辞書をNSDictionaryにキャストして、その可変コピーを作成し、NSMutableDictionaryにキャストすることです。複雑すぎますよね?したがって、辞書から新しいNSMutableDictionaryを作成することをお勧めします。これは単なる代替手段です。

var foundationDictionary = (dictionary as NSDictionary).mutableCopy() as! NSMutableDictionary
2
Zell B.

この行を置き換えてみてください:

var foundationDictionary = dictionary as NSMutableDictionary

このコードで:

var foundationDictionary = NSMutableDictionary(dictionary: dictionary)
1
ridvankucuk

辞書

不変の辞書を作成する

let dictionary = ["Item 1": "description", "Item 2": "description"]

可変辞書を作成する

var dictionary = ["Item 1": "description", "Item 2": "description"]

新しいペアを辞書に追加する

dictionary["Item 3"] = "description"
1
Ved Rauniyar