ios - घातक त्रुटि: NSArray तत्व स्विफ्ट अर्रे एलीमेंट प्रकार से मिलान करने में विफल रहा




swift ios8 (2)

यदि आप कोका एपीआई के साथ काम कर रहे हैं, तो आपको हमेशा एक NSArray प्राप्त होता है, जो कि नहीं है

इसलिए, आपको उस सरणी को एक टाइपिंग स्विफ्ट अर्रे में डालना होगा।

आपको इस कोड को संकलित करने में सक्षम होना चाहिए:

var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]()

self.myArray = dicResponse["data"]! as [CUSTOM_CLASS]

इस तरह, प्रत्येक सरणी तत्व को CUSTOM_CLASS ऑब्जेक्ट पर CUSTOM_CLASS जाता है।

अचानक I'v के रूप में चलाने के समय त्रुटि हो रही शुरू कर दिया,

fatal error: NSArray element failed to match the Swift Array Element type

I'v घोषित मेरी सरणी के रूप में,

var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]()

अब, मेरे सर्वर प्रतिक्रिया सफलता ब्लॉक में मुझे है,

self.myArray = dicResponse["data"]! as Array

println(self.myArray) // FATAL ERROR HERE

जो Xcode6 बीटा 6 में नवीनीकरण करने से पहले सही काम कर रहा था

FYI : dicResponse["data"]! // is verified as valid

(पहले गलत जगह इंगित करने के लिए क्षमा करें!)

हल किया :

पता नहीं है लेकिन मैंने कुछ बदलाव किए हैं और यह काम करता है,

var myArray = [AnyObject]()

self.myArray = dicResponse["data"]! as [AnyObject]

अगर मैं कुछ और जानकारी के साथ Teejay के जवाब को पूरक कर सकता था यह गलती:

fatal error: NSArray element failed to match the Swift Array Element type

एक प्रकार बेमेल के कारण होता है

उदाहरण के लिए आपके स्विफ्ट सरणी प्रकार में डालें:

    myPersonList = aDictionary["persons"] as [Person]

कुंजी "persons" आधार पर एएफ़्फ़ाइन में मूल्य तक पहुंचने के लिए, स्विफ्ट को उम्मीद है कि किसी प्रकार की व्यक्ति को प्राप्त होगा। यह संकलन करेगा और बिना किसी समस्या के निष्पादित करेगा।

हालांकि, बाद में आपके कोड में जब myPersonList सरणी तत्व एक्सेस किया myPersonList है, यदि प्रकार निर्दिष्ट नहीं होता है - मेरे उदाहरण में - तो निष्पादन उपरोक्त त्रुटि से क्रैश हो जाएगा।

निचली रेखा: आपने लगभग निश्चित रूप से कलाकारों में गलत प्रकार निर्दिष्ट किया है अपने डिक्शनरी ऑब्जेक्ट की जांच करें कि यह वास्तव में क्या है।





xcode6-beta5