Answers:
您使用NSNumber。
它具有init ...和number ...方法,它们采用布尔值,就像整数一样。
// 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
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"someKey", nil];
@YES
与[NSNumber numberWithBool:YES]
如果将其声明为文字,并且使用的是clang v3.1或更高版本,则如果将其声明为文字,则应使用@NO / @YES。例如
NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;
有关更多信息:
NSDictionary
,而不是一个NSMutableDictionary
。因此,分配@YES
到foo[@"bar"]
,因为是不可能的@{ @"key": @NO }
不可变。
正如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
[NSNumber numberWithBool:NO]
和[NSNumber numberWithBool:YES]
。