我有一个简单的对象,它有一个 NSNumber 用于存储一些标志。我有一个 conienience getter 方法,它实际上可以:
[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!