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
このための組み込みのキャストはありません。ただし、代わりに、辞書を使用するNSMutableDictionary
の初期化子を使用できます。
var foundationDictionary = NSMutableDictionary(dictionary: dictionary)
上記の回答に対する1つの代替回答は、辞書をNSDictionaryにキャストして、その可変コピーを作成し、NSMutableDictionaryにキャストすることです。複雑すぎますよね?したがって、辞書から新しいNSMutableDictionaryを作成することをお勧めします。これは単なる代替手段です。
var foundationDictionary = (dictionary as NSDictionary).mutableCopy() as! NSMutableDictionary
この行を置き換えてみてください:
var foundationDictionary = dictionary as NSMutableDictionary
このコードで:
var foundationDictionary = NSMutableDictionary(dictionary: dictionary)
辞書
不変の辞書を作成する
let dictionary = ["Item 1": "description", "Item 2": "description"]
可変辞書を作成する
var dictionary = ["Item 1": "description", "Item 2": "description"]
新しいペアを辞書に追加する
dictionary["Item 3"] = "description"