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


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.