के साथ ऑब्जेक्ट कुंजियां मैं मुख्य मूल्य जोड़ों का एक गुच्छा स्टोर करना चाहता हूं, जिसमें मेरा स्वयं का ऑब्जेक्ट (ऑब्जेक्टए) है जो एनएसओब्जेक्ट से प्राप्त होता है, और मान int है।
मैं एक एनएसएमयूटेबल डिक्शनरी का उपयोग करने की कोशिश कर रहा हूं। मैं समझता हूँ कि आप शब्दकोश में केवल दुकान वस्तु प्रकार, तो मैं निम्नलिखित हो सकता है:एनएसएमयूटेबल डिक्शनरी (ऑब्जेक्टिव-सी)
id value = [NSNumber numberWithInt:my_number];
[[self dictionary] setObject:value forKey:myObjectA];
अब जब कि मुझे एक त्रुटि देता है, कह रही है
- [ObjectA copyWithZone:]: गैर मान्यता प्राप्त चयनकर्ता भेजा उदाहरण
जो ठीक है, मैं समझता हूँ कि वस्तु कुंजी NSCopying प्रोटोकॉल लागू करने की जरूरत है। हालांकि मैंने पढ़ा है कि आप NSValue का उपयोग करके अपनी ऑब्जेक्ट्स को लपेटकर ऐसा कर सकते हैं।
क्या कोई कृपया बता सकता है कि मैं अपनी वस्तुओं को कैसे लपेटूंगा, और फिर मैं कुंजी द्वारा मूल्य कैसे प्राप्त कर सकता हूं? क्या मैं अभी भी dictionary objectForKey:myObjectA
का उपयोग करने में सक्षम हूं या क्या मुझे खोज कर रहा हूं, जबकि मुझे NSOalue ऑब्जेक्ट के साथ myObjectA को लपेटना है? या क्या मुझे अपनी कस्टम कक्षा पर एनएससीपीआईपी लागू करना चाहिए, या इसके बजाय स्ट्रिंग कुंजी का उपयोग करना चाहिए?
मैं एक शब्दकोश का उपयोग करने के लिए यह सबसे आसान और आसान तरीका ढूंढ रहा हूं, अगर मुझे एक स्ट्रिंग कुंजी लागू करना है और setValue का उपयोग करना है: forKey: इसके बजाय, लेकिन अगर मैं कर सकता हूं तो मैं ऑब्जेक्ट कुंजी का उपयोग करूंगा।
क्या आप मेरी अपनी कक्षा में अपनी प्रतिलिपिथोन कार्यान्वयन में जो कुछ भी डालेंगे, उसे शामिल करने के लिए आपको जवाब दे सकते हैं? – link664
@ link664: मेरा उत्तर अपडेट किया गया। – DarkDust
यदि आप '-इस एक्वाल' लागू करते हैं, तो आपको '-शैश' लागू करने की आवश्यकता है: यदि दो ऑब्जेक्ट्स '-इस एक्वाल' द्वारा निर्धारित अनुसार बराबर हैं, तो उनके पास एक ही हैश मान होना चाहिए। – JeremyP