এনএসড অভিধান - অভিধানে কী-মান জুটি রয়েছে কিনা তা যাচাই করা দরকার


97

আমি অনুসরণ হিসাবে কিছু জিজ্ঞাসা করা প্রয়োজন। মনে করুন আমার কাছে একটি অভিধান রয়েছে।

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 এর কী "বি" মান রয়েছে ?? জুড়ি নাকি না?

প্রশ্নটা কেমন?

অন্য প্রশ্নটি কীভাবে কেবল মোট কী-মান জুটি গণনা করবেন?

উদাহরণস্বরূপ বলুন NSInteger mCount=[xyz keyCounts];

উত্তর:


194

শুধু এটির জন্য জিজ্ঞাসা করুন 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] [2] )।


+1 প্রকৃতপক্ষে, ডকুমেন্টেশনটি সরাসরি এটিকে বলেছে: developer.apple.com/mac/library/docamentation/Cocoa/References/…
ডেভ দেলং

6
কী যদি অভিধানে কী উপস্থিত থাকে এবং এর মান 0 হয়? আমরা কি ভুল করে ভাবব না যে কী অভিধানটি মোটেই উপস্থিত নেই?
jbx72487

13
@ jbx72487 অভিধানে অবশ্যই অবজেক্ট থাকতে হবে; objectForKey:একটি ফেরৎ idএকটি উদ্দেশ্য-সি বস্তুর একটি পয়েন্টার -। আপনি যদি নম্বর সংরক্ষণ করেন তবে সেগুলি অবশ্যই এনএসএনম্বারে " বক্সড " করা উচিত । এমনকি এনএসএনবার শূন্য বা মিথ্যা হলেও এটি এখনও একটি বৈধ পয়েন্টার হিসাবে থাকবে এবং উপরের কোডটি অস্তিত্ব সঠিকভাবে সনাক্ত করবে।
ম্যাট বি।

আমার সাথে কাজ না করে এটি নিম্নলিখিতটি ফিরে আসে: অযাচিত ব্যতিক্রম 'এনএসআইএনওডিয়াল্টিগ্রাফিক্স এক্সপেশন' এর কারণে অ্যাপ্লিকেশনটি সমাপ্ত করা হচ্ছে, কারণ: '- [__ NSSingleObjectArrayI অবজেক্টকি:]: অজ্ঞাত নির্বাচক 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); 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.