NSDictionary - यह जांचने की आवश्यकता है कि क्या शब्दकोश में कुंजी-मूल्य जोड़ी है या नहीं


96

मुझे केवल अनुसरण करने के लिए कुछ पूछने की आवश्यकता है। मान लीजिए कि मैं एक शब्दकोश है।

NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
[xyz setValue:@"sagar" forKey:@"s"];
[xyz setValue:@"amit" forKey:@"a"];
[xyz setValue:@"nirav" forKey:@"n"];
[xyz setValue:@"abhishek" forKey:@"a"];
[xyz setValue:@"xrox" forKey:@"x"];

अब, मुझे निम्नानुसार जांच करने की आवश्यकता है

[xyz में मुख्य "b" मान होता है ?? जोड़ी है या नहीं?

प्रश्न है कैसे?

दूसरा सवाल यह है कि कुल कुंजी-मूल्य जोड़ी को कैसे गिना जाए?

उदाहरण के लिए कहो NSInteger mCount=[xyz keyCounts];

जवाबों:


193

बस इसके लिए पूछें objectForKey:@"b"। यदि यह वापस आता है nil, तो उस कुंजी पर कोई वस्तु सेट नहीं की जाती है।

if ([xyz objectForKey:@"b"]) {
    NSLog(@"There's an object set for key @\"b\"!");
} else {
    NSLog(@"No object set for key @\"b\"");
}

संपादित करें : आपके संपादित दूसरे प्रश्न के अनुसार, यह बस है NSUInteger mCount = [xyz count];। इन दोनों जवाबों को अच्छी तरह से प्रलेखित किया गया है और आसानी से एनएसडॉर श्रेणी संदर्भ ( [1] [२] ) में पाया जाता है।


+1 वास्तव में, प्रलेखन सीधे यह कहता है: developer.apple.com/mac/library/documentation/Cocoa/Reference/…
— डेव डोंगलांग

6
क्या होगा यदि कुंजी शब्दकोश में मौजूद है और इसका मान 0 है? क्या हम गलती से यह नहीं सोचेंगे कि कुंजी शब्दकोश में मौजूद नहीं है?
— jbx72487

13
@ jbx72487 डिक्शनरी में ऑब्जेक्ट होना चाहिए; objectForKey:एक idवस्तु-सी वस्तु के लिए एक सूचक लौटाता है । यदि आप संख्याएँ जमा कर रहे हैं, तो उन्हें एक NSNumber में "बॉक्सिंग" होना चाहिए । यहां तक ​​कि अगर NSNumber शून्य या गलत है, तो यह अभी भी एक वैध सूचक होगा और उपरोक्त कोड अस्तित्व का सही पता लगाएगा।
— मैट बी।

मेरे साथ काम नहीं कर रहा है कि यह निम्नलिखित वापसी: न आया हुआ अपवाद 'NSInvalidArgumentException', कारण की वजह से उनका समापन एप्लिकेशन: '- [__ NSSingleObjectArrayI objectForKey:]: गैर मान्यता प्राप्त चयनकर्ता उदाहरण 0x60000133a1c0 के लिए भेजा'
— अम्र गुस्सा

2

शाब्दिक वाक्य रचना के साथ आप निम्नानुसार जांच कर सकते हैं

static const NSString* kKeyToCheck = @"yourKey"
if (xyz[kKeyToCheck])
  NSLog(@"Key: %@, has Value: %@", kKeyToCheck, xyz[kKeyToCheck]);
else
 NSLog(@"Key pair do not exits for key: %@", kKeyToCheck); 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.