আমি কীভাবে কোনও এনএসডি অভিধানে একটি বুলিয়ান মান যুক্ত করতে পারি?


112

ঠিক আছে, পূর্ণসংখ্যার জন্য আমি ব্যবহার করব NSNumber। তবে হ্যাঁ এবং না কোনও বস্তু নয় I আফাক আমি কি কেবল একটিতে অবজেক্ট যুক্ত করতে পারি NSDictionary?

বুলিয়ানদের জন্য আমি কোনও মোড়কের ক্লাস পাইনি। কোন আছে?

উত্তর:


156

আপনি এনএসবার ব্যবহার করেন।

এটিতে ইনিগ ... এবং নম্বর ... পদ্ধতি রয়েছে যা বুলিয়ান গ্রহণ করে, ঠিক যেমন এটি পূর্ণসংখ্যা ইত্যাদি করে।

থেকে NSNumber বর্গ রেফারেন্স :

// Creates and returns an NSNumber object containing a 
// given value, treating it as a BOOL.
+ (NSNumber *)numberWithBool:(BOOL)value

এবং:

// Returns an NSNumber object initialized to contain a
// given value, treated as a BOOL.
- (id)initWithBool:(BOOL)value

এবং:

// Returns the receiver’s value as a BOOL.
- (BOOL)boolValue

গ্রেট! আমার ধারণা অভ্যন্তরীণভাবে এটি 0/1 হিসাবে বুল সঞ্চয় করে?
ধন্যবাদ

5
@harms সঠিক। একটি উদাহরণ হিসাবে: NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"someKey", nil];
সুতরাং এটি

29
এটি উল্লেখ করার মতো, এখন এনএসএন সংখ্যাগুলির জন্য একটি আক্ষরিক সিনট্যাক্স রয়েছে। @YESহিসাবে একই[NSNumber numberWithBool:YES]
jcampbell1

51

সেই থেকে নতুন সিনট্যাক্স Apple LLVM Compiler 4.0

dictionary[@"key1"] = @(boolValue);
dictionary[@"key2"] = @YES;

সিনট্যাক্স রূপান্তরিত BOOLহয় NSNumber, যা গ্রহণযোগ্য NSDictionary


16

যদি আপনি এটিকে আক্ষরিক হিসাবে ঘোষণা করছেন এবং আপনি ঝাঁকুনি v3.1 বা তার বেশি ব্যবহার করছেন, আপনি যদি এটি আক্ষরিক হিসাবে ঘোষণা করছেন তবে আপনার @NO / @YES ব্যবহার করা উচিত। যেমন

NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;

এ সম্পর্কে আরও তথ্যের জন্য:

http://clang.llvm.org/docs/ObjectiveCLiterals.html


1
একটি সংকলক ত্রুটি পান: অসম্পূর্ণ পয়েন্টার প্রকারগুলি এনএসডেটরিয় শব্দটি * এনএসডেটরিয় টাইপের একটি এক্সপ্রেশন দিয়ে সূচনা করে। আপনি যদি পরিবর্তে এটিকে এনএসডিকোয়্যারে পরিবর্তন করেন, সংকলক ত্রুটিটি পান: এনএসডেটরিয় টাইপের অবজেক্টে অভিধানের উপাদান লিখতে প্রত্যাশিত পদ্ধতি *
টনি

1
আক্ষরিক কেবল একটি তৈরি করবে NSDictionary, একটি নয় NSMutableDictionary। সুতরাং অ্যাসেট @YESকরা foo[@"bar"]সম্ভব নয় যেহেতু @{ @"key": @NO }পরিবর্তনযোগ্য নয়।
redhotvengeance

3

জ্যাক্যাম্পবেল 1 যেমন নির্দেশ করেছে, এখন আপনি এনএসএন নাম্বারগুলির জন্য আক্ষরিক বাক্য গঠন ব্যবহার করতে পারেন:

NSDictionary *data = @{
                      // when you always pass same value
                      @"someKey" : @YES
                      // if you want to pass some boolean variable
                      @"anotherKey" : @(someVariable)
                      };

-2

এটা চেষ্টা কর:

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:[NSNumber numberWithBool:TRUE]  forKey:@"Pratik"];
[dic setObject:[NSNumber numberWithBool:FALSE] forKey:@"Sachin"];

if ([dic[@"Pratik"] boolValue])
{
    NSLog(@"Boolean is TRUE for 'Pratik'");
}
else
{
    NSLog(@"Boolean is FALSE for 'Pratik'");
}

if ([dic[@"Sachin"] boolValue])
{
    NSLog(@"Boolean is TRUE for 'Sachin'");
}
else
{
    NSLog(@"Boolean is FALSE for 'Sachin'");
}

আউটপুট নিম্নলিখিত হিসাবে হবে:

বুলিয়ান ' প্রতীক ' এর পক্ষে সত্য

বুলিয়ান ' শচীন ' এর পক্ষে মিথ্যা


1
এছাড়াও আপনি কি করতে পারেন [NSNumber numberWithBool:NO]এবং [NSNumber numberWithBool:YES]
অ্যালেক্স জাভাটোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.