답변:
NSNumber를 사용합니다.
정수 등을 수행하는 것처럼 부울을 취하는 init ... 및 number ... 메소드가 있습니다.
로부터 의 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
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]
.