いくつかのフラグを格納するために使用される NSNumber を持つ単純なオブジェクトがあります。私は実際に行う便利なゲッターメソッドを持っています:
[self.flags integerValue] & SomeConstantFlag
プロパティの@property (readonly, nonatomic, assign) BOOL someConstantFlag
これは、次のような基になるブール値にアクセスするときに正常に機能します
model.someConstantFlag
しかし、私がしようとすると
id value = [model valueForKey:@"someConstantFlag"];
次に、値 2、4 などの NSNumber などの不適切なブール表現を返します。プロパティの宣言が BOOL の場合、なぜこれが発生するのですか? この問題を克服する「きれいな」方法はありますか?
一方、ラッピングは問題なく機能します。
BOOL someBool = 42;
NSNumber* numberVal = @(someBool);
//The underlying is an __NSCFBoolean with the proper 0/1 val!