2014-06-29 12 views
6

में NSDictionary खाली करने के लिए मैं एक NSDictionaryसेट वस्तुओं स्विफ्ट

var namesDictionary=Dictionary<String,String>() 
    namesDictionary["Jacob"] = "Marry" 

बना सकते हैं लेकिन, नीचे कोडित की तरह जब मैं एक खाली शब्दकोश बनाने के लिए, लाइन 1 मैं Okie, लेकिन लाइन 2 (जोड़ने मान) एक त्रुटि फेंकता है।

var namesDictionary =[:] 
    namesDictionary["Jacob"] = "Marry" 

त्रुटि "इस अभिव्यक्ति के परिणाम को असाइन नहीं कर सकता"। क्या मूल्यों को आवंटित करने का कोई अन्य तरीका है।

उत्तर

13

ऐसा लगता है कि यह आपके शब्दकोश के प्रकार को त्वरित रूप से व्याख्या करने वाला एक मुद्दा है। अपने खाली शब्दकोश को स्पष्ट रूप से टाइप करने का प्रयास करें।

var namesDictionary: Dictionary<String, String> = [:] 
namesDictionary["Jacob"] = "Marry" 

मुझे लगता है कि [:] के लिए एक बेहतर इस्तेमाल एक पहले से ही निर्धारित डिक्शनरी खाली करने के लिए है। यदि आप एक तीसरी पंक्ति namesDictionary = [:] जोड़ते हैं, तो आप namesDictionary["Jacob"] = "Marry" को फिर से कॉल करने में सक्षम होंगे क्योंकि संकलक जानता है कि यह आंतरिक घोषणा से किस प्रकार का शब्दकोश है।

+0

फिर इसे पहली पंक्ति में ही फेंक दिया जाना चाहिए था। – andyPaul

+1

पहली पंक्ति ठीक है। यह एक खाली शब्दकोश बनाता है, लेकिन कुंजी/मान प्रकार स्ट्रिंग नहीं हैं। इस बिंदु पर शब्दकोश बहुत बेकार है क्योंकि यह किसी भी महत्वपूर्ण मूल्य जोड़े को स्वीकार नहीं करेगा – connor

+0

ठीक है, var namesDictionary = शब्दकोश <स्ट्रिंग, स्ट्रिंग>() और var namesDictionary: शब्दकोश <स्ट्रिंग, स्ट्रिंग> = के बीच क्या अंतर है [:] – andyPaul

संबंधित मुद्दे