2014-06-11 7 views
8

को स्विफ्ट शब्दकोश कन्वर्ट मैं एक स्विफ्ट शब्दकोश वस्तुNSDictionary

var params = ["first_name": firstNameTextField.text, 
       "last_name": lastNameTextField.text, 
       "company": companyTextField.text, 
       "email_address": emailTextField.text, 
       "phone_number": phoneTextField.text] 

अगला बनाया है, मैं ObjC ढांचा जो मैं अपने स्विफ्ट एप्लिकेशन से कनेक्ट किया है। वहाँ संपत्ति के साथ

@property (nonatomic, retain) NSMutableDictionary *fields; 

मैं इसे इस तरह से

object.fields = params 

आवंटित करने के लिए कोशिश कर रहा हूँ अंदर एक वस्तु है और एक त्रुटि मिली:

Cannot convert the expression's type '()' to type 'NSMutableDictionary!' 

मैं भी ऐसा करने की कोशिश की रास्ता

var params = ["first_name": firstNameTextField.text, 
       "last_name": lastNameTextField.text, 
       "company": companyTextField.text, 
       "email_address": emailTextField.text, 
       "phone_number": pnoneTextField.text].mutableCopy() as NSMutableDictionary 

object.fields = params 

यह अच्छी तरह से तैयार की है, लेकिन मैं रनटाइम त्रुटि मिला:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: 
attempt to insert nil object from objects[0]' 

मैं अपने सभी क्षेत्रों मुद्रित किया है और वे नहीं के बराबर नहीं हैं:

println(firstNameTextField.text) 
println(lastNameTextField.text) 
println(companyTextField.text) 
println(emailTextField.text) 
println(pnoneTextField.text) 

... 

1 
2 
3 
5 
4 

कोई भी विचार?

+0

लेकिन "1", "2" और इसी तरह पाठ नहीं है कि आप वास्तव में पहले नाम फ़ील्ड और अंतिम नाम फ़ील्ड में रखते हैं - क्या वे ???? मुझे लगता है कि वे _all_ शून्य हैं। – matt

उत्तर

6

parms.bridgeToObjectiveC() आज़माएं। हालांकि, आपको एनएसएमयूटेबल डिक्शनरी की बजाय एनएस डिक्शनरी मिल सकती है।

+1

से पहले शुरू किए गए थे, धन्यवाद, यह इस तरह से काम करता है! var params = [...]। BridgeToObjectiveC() एनएसएमयूटेबल डिक्शनरी –

+0

आपका स्वागत है! – Bill

+2

यह बीटा 6 के रूप में काम नहीं कर रहा है? [: "Qwer" "asdf"] bridgeToObjectiveC() 'शब्दकोश ' एक सदस्य नामित 'bridgeToObjectiveC' –

4

मुझे लगता है कि इस कोड को प्रारंभ करने के लिए अपने params ...

var params = ["first_name": firstNameTextField.text, 
       "last_name": lastNameTextField.text, 
       "company": companyTextField.text, 
       "email_address": emailTextField.text, 
       "phone_number": phoneTextField.text] 

... इससे पहले कि आप किसी भी पाठ फ़ील्ड दुकानों को झुका है हो रहा हो सकता है अनुमान लगा रहा हूँ। मैं सुझाव दूंगा कि आप var को @lazy के रूप में सेट करें, इसे Dictionary<String,String> के रूप में टाइप करें, और इसे इस शब्दकोश को वापस करने वाले कॉल किए गए बंद करने के लिए सेट करें। इस प्रकार शब्दकोश तब तक नहीं बनाया जाएगा जब आप वास्तव में self.params तक पहुंचते हैं।

+0

+1 कुछ परीक्षणों के बाद मैं एक ही परिणाम में आया था। – Sulthan

+0

नहीं, जैसा कि आप println फ़ंक्शन को उचित मान प्रिंट कर सकते हैं। तो मैं कह सकता हूं कि सभी टेक्स्टफिल्ड्स –