बस इसे जोड़ने के लिए, क्योंकि मुझे यह त्रुटि भी मिल रही थी। इन सभी उत्तरों के माध्यम से जाना सबसे अधिक यूआई और स्टोरीबोर्ड सामान के साथ काम करने के लिए लागू होता है। मुझे पता है कि मूल पोस्टर यूआई के साथ काम कर रहा था, लेकिन जब इस त्रुटि के संभावित कारणों की खोज हो रही थी, तो ज्यादातर सभी इस सवाल को दोहराते हैं कि दूसरों को डुप्लिकेट के रूप में बंद किया जा रहा है या बस स्टोरीबोर्ड में चीजों को जोड़ने के मुद्दे हैं। मेरा समाधान जोड़ें।
मैं स्विफ्ट 2 में एक वेब सेवा कोडिंग पर काम कर रहा था। मैंने सभी आवश्यक प्रॉक्सी ऑब्जेक्ट और स्टब्स बनाए थे। जैसा कि मैंने लौटे XML के माध्यम से लूप किया था मैं गतिशील रूप से अपनी वस्तुओं को तात्कालिक कर रहा था, जो सभी उन पर आया NSObject
और उपयोग कर setValue:forKey
रहा था। हर बार setValue:forKey
एक संपत्ति सेट करने की कोशिश की, जो इस त्रुटि के साथ उड़ गई।
मैं प्रत्येक प्रकार मैं के साथ (जैसे काम कर रहा था के लिए एक स्विच बयान था Bool?
, CShort?
, String?
) और प्रत्येक एक्सएमएल नोड मैं के माध्यम से चला गया और जाँच की किस प्रकार वस्तु पर था और फिर उस प्रकार के लिए मूल्य बदला है और साथ सेट करने का प्रयास किया के लिए setValue:forKey
।
आखिरकार मैंने इन सभी setValue:forKey
लाइनों पर टिप्पणी करना शुरू कर दिया और पाया कि मेरे default
स्विच स्टेटमेंट केस ने काम किया String?
।
अंत में मुझे पता चला कि आप वैकल्पिक स्विफ्ट प्रकारों का उपयोग तब तक नहीं कर सकते हैंsetValue:forKey
जब तक कि उनके पास ऑब्जेक्टिव-सी प्रकार की तरह प्रत्यक्ष मैपिंग न हो String?
या NSNumber?
। मैंने सभी CShort?
प्रकारों को बदलना NSNumber?
शुरू कर दिया है, जिसका सीधा मानचित्रण है। Bool?
मेरे मामले में मेरे लिए यह ठीक था कि मैं इसका इस्तेमाल करूं Bool
और इसे शुरू करूं false
। दूसरों के पास वह विलासिता नहीं हो सकती है।
वैसे भी एक सिरदर्द जो इतनी उम्मीद से था, इससे किसी और को भी परेशानी होती है, जो इस तरह की समस्या से जूझता रहता है और इस सवाल पर पुनर्निर्देशित होता रहता है और खुद से कहता है, "मैं यूआई में कुछ नहीं कर रहा हूँ !!"
तो अंत में एक और समय को दोहराने के लिए कुंजी-मूल्य कोडिंग वैकल्पिक के साथ काम नहीं करता है। नीचे मैंने कहीं खोजना बंद कर दिया था, लेकिन मैं यह भूल गया कि यह पोस्ट करने वाले को मैं कहाँ से माफी माँगता हूँ और अगर मैं इसे याद करूँ तो मुझे इसका श्रेय मिलेगा, लेकिन इसने मेरी जान बचाई:
आप KVC को एक वैकल्पिक Int गुण पर उपयोग नहीं कर सकते, क्योंकि KVC Cocoa / Objective-C है, और Objective-C एक वैकल्पिक Int नहीं देख सकता है - यह Objective-C के लिए bridged नहीं है। ऑब्जेक्टिव-सी केवल उन्हीं प्रकारों को देख सकता है जो ऑब्जेक्टिव-सी के लिए ब्रिज किए गए हैं:
वर्ग प्रकार जो NSObject से प्राप्त होते हैं
वर्ग प्रकार जो @objc के साथ उजागर होते हैं
स्विफ्ट संरचना जो ब्रिज की जाती हैं