回答:
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]
。