2015-05-20 17 views
5

Ich versuche, ein Swift Dictionary vom Typ [String : String] am SKSpriteNode Eigenschaft userData zu schaffen, und weisen Sie erfordert eine NSMutableDictionary. Als ich dies versuchen erhalte ich die Fehlermeldung:Swift-Wörterbuch [String: String] zu NSMutableDictionary?

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

Kann mir jemand in die richtige Richtung?

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

Antwort

24

Es gibt keine integrierte Besetzung dafür. Aber stattdessen können Sie NSMutableDictionary ‚s initializer verwenden, die ein Wörterbuch nimmt:

var foundationDictionary = NSMutableDictionary(dictionary: dictionary) 
+0

geschätzt viel jeder, Danke Airspeed, viel einfacher als ich erwartet hatte. – fuzzygoat

1

können Sie versuchen, diese Linie zu ersetzen:

var foundationDictionary = dictionary as NSMutableDictionary 

Mit diesem Code:

var foundationDictionary = NSMutableDictionary(dictionary: dictionary) 
2

Eine alternative Antwort Um die obigen Antworten zu erhalten, müssen Sie Ihr Wörterbuch in NSDictionary umwandeln und eine veränderbare Kopie davon erstellen und in NSMutableDictionary umwandeln. Zu kompliziert, oder? Daher empfehlen die Schaffung ich neue NSMutableDictionary aus Wörterbuch Dies ist nur eine Alternative

var foundationDictionary = (dictionary as NSDictionary).mutableCopy() as! NSMutableDictionary 
0

Wörterbücher

unveränderliche Wörterbuch erstellen

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

wandelbar Wörterbuch erstellen

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

neues Paar anhängen Zum Wörterbuch

dictionary["Item 3"] = "description"