2015-05-20 23 views
5

मैं [String : String] के SKSpriteNode संपत्ति userData पर NSMutableDictionary की आवश्यकता के लिए स्विफ्ट Dictionary स्विफ्ट Dictionary बनाने और असाइन करने का प्रयास कर रहा हूं। जब मैं इसे आज़माता हूं तो मुझे त्रुटि मिलती है:स्विफ्ट शब्दकोश [स्ट्रिंग: स्ट्रिंग] से एनएसएमयूटेबल डिक्शनरी?

'[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 

उत्तर

24

इसके लिए कोई अंतर्निहित कलाकार नहीं है।

var foundationDictionary = NSMutableDictionary(dictionary: dictionary) 
+0

सभी की बहुत सराहना की, धन्यवाद एयरस्पेड, मैं अपेक्षा कर रहा था उससे कहीं अधिक सरल। – fuzzygoat

1

आप इस लाइन को बदलने के लिए प्रयास कर सकते हैं: लेकिन इसके बजाय आप NSMutableDictionary के प्रारंभकर्ता है कि एक शब्दकोश लेता है का उपयोग कर सकते उपर्युक्त उत्तरों के लिए अपने शब्दकोश को NSDictionary में डालना है, इसकी एक परिवर्तनीय प्रति बनाएं और इसे NSMutableDictionary पर डालें। बहुत जटिल, है ना? इसलिए मैं शब्दकोश से नए NSMutableDictionary बनाने की सलाह देते यह है सिर्फ एक विकल्प

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

एक वैकल्पिक उत्तर: इस कोड के साथ

var foundationDictionary = dictionary as NSMutableDictionary 

:

var foundationDictionary = NSMutableDictionary(dictionary: dictionary) 
0

शब्दकोश

अपरिवर्तनीय शब्दकोश बनाएं

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

परिवर्तनशील शब्दकोश बनाएं

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

शब्दकोश में नई जोड़ी संलग्न

dictionary["Item 3"] = "description" 
संबंधित मुद्दे