2015-05-20 30 views
5

Sto tentando di creare e assegnare uno Swift Dictionary di tipo [String : String] alla proprietà SKSpriteNodeuserData che richiede uno NSMutableDictionary. Quando provo questo ho ricevuto l'errore:Swift Dictionary [String: String] in NSMutableDictionary?

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

Qualcuno può indicarmi la giusta direzione?

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

risposta

24

Non esiste un cast predefinito per questo. Ma invece è possibile utilizzare initializer NSMutableDictionary s' che prende un dizionario:

var foundationDictionary = NSMutableDictionary(dictionary: dictionary) 
+0

Molto apprezzato a tutti, Grazie Airspeed, molto più semplice di quanto mi aspettassi. – fuzzygoat

1

Puoi provare a sostituire questa linea:

var foundationDictionary = dictionary as NSMutableDictionary 

Con questo codice:

var foundationDictionary = NSMutableDictionary(dictionary: dictionary) 
2

Una risposta alternativa alle risposte di cui sopra è di lanciare il dizionario su NSDictionary per crearne una copia mutevole e inviarlo a NSMutableDictionary. Troppo complicato, vero? Pertanto si raccomanda di creare nuova NSMutableDictionary dal dizionario questo è solo un'alternativa

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

Dizionari

Creare dizionario immutabile

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

Creare dizionario mutevole

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

Accoda nuova coppia al dizionario

dictionary["Item 3"] = "description" 
Problemi correlati