我如何添加一个布尔值到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;
有关更多信息:
正如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