さて、整数にはNSNumber
を使用します。しかし、YESとNOはオブジェクトではありません。私の知る限り。 NSDictionary
にのみオブジェクトを追加できますか?
ブール値のラッパークラスが見つかりませんでした。何かありますか?
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
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)
};