我如何添加一个布尔值到NSDictionary?

那么,整数我会使用NSNumber 。 但是,我猜,YES和NO不是对象。 Afaik我只能添加对象到一个NSDictionary ,对不对?

我找不到任何布尔类的包装类。 有没有?

你使用NSNumber。

它具有初始化和编号…采用布尔运算符的方法,就像整数等一样。

从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 

Apple LLVM Compiler 4.0以来的新语法

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

语法将BOOL转换为NSNumber ,这是NSDictionary可以接受的。

如果您将其声明为文字,并且您使用的是clang v3.1或更高版本,则应该使用@NO / @YES(如果将其声明为文字)。 例如

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

有关更多信息:

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

正如jcampbell1指出的那样,现在你可以使用NSNumbers的文字语法:

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

尝试这个:

 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'"); } 

输出结果如下:

对于“ Pratik ”,布尔值为TRUE

对于' Sachin '布尔值是FALSE