2012-01-24 11 views
7

निम्न परिणामस्वरूप BAD_ACCESS त्रुटि क्यों होती है?क्या NSDictionary में विभिन्न प्रकार की ऑब्जेक्ट्स मान के रूप में हो सकती हैं?

क्या आपके पास NSDictionary में मूल्यों के रूप में विभिन्न प्रकार की वस्तुएं हो सकती हैं, जिसमें एक और NSDictionary भी शामिल है?

उत्तर

15

आप एक NSDictionary में वस्तु किसी भी प्रकार के रख सकते हैं। तो @"fred" ठीक है, 1 नहीं है, क्योंकि एक पूर्णांक एक वस्तु नहीं है। यदि आप एक शब्दकोश में एक नंबर डाल करने के लिए चाहते हैं, एक NSNumber में लपेट:

NSDictionary *header = { @"title": @"fred", @"count": @1 }; 
+2

दिलचस्प। मैं सी # के लिए उपयोग किया जाता है जहां सब कुछ एक वस्तु है। धन्यवाद। – ChrisP

0

आपके पास यह तरीका नहीं है। संख्या 1 एक आदिम है और एनएसएआरएआरई वस्तु केवल वस्तुओं को पकड़ सकती है। "1" के लिए एनएसएनंबर बनाएं और फिर इसे स्टोर करेगा।

0

एक NSDictionary केवल उस में ऑब्जेक्टिव-सी वस्तुओं को शामिल कर सकते हैं (जैसे NSString और NSArray के रूप में), यह आदिम प्रकार int, float, या char* की तरह नहीं हो सकते। उन बाधाओं को देखते हुए, विषम शब्दकोश पूरी तरह से कानूनी हैं।

आप एक कुंजी या मान के रूप में एक नंबर जैसे 1 शामिल करना चाहते हैं, तो आप एक NSNumber साथ लपेट चाहिए:

NSDictionary *header=[[NSDictionary alloc] initWithObjectsAndKeys: 
    @"fred", @"title", 
    [NSNumber numberWithInt:1], @"count", 
    nil]; 
0

केवल आवश्यकता है कि एक वस्तु हो रहा है। आपके कोड में ऑब्जेक्ट्स को सही तरीके से संभालने के लिए आप पर निर्भर है, लेकिन संभवतः, आप कुंजी के आधार पर अपने प्रकार का ट्रैक रख सकते हैं।

1 कोई ऑब्जेक्ट नहीं है। यदि आप एक शब्द को एक शब्दकोश में रखना चाहते हैं तो आप इसे एनएसएनंबर में परिवर्तित करना चाहते हैं।

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

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