我的模型中有Invisible = 0
,我正在尝试使用此行在BOOL
中获得它。
BOOL invisible = [self.model objectForKey:@"Invisible"];
但不可见是YES而不是NO。我也尝试过bool,但这也是事实。我使用[[self.model objectForKey:@"Invisible"] class]
检查了对象的类,它显示了_NSCFBoolean。怎么了模型是NSDictionary。
更新
好的,所以我找到了真正的问题。我有Filter类,其中getter isInvisible和代码为
- (BOOL)isInvisible {
return [[self.model objectForKey:@"Invisible"] boolValue];
}
当我第一次打电话给我时,它返回NO。哪个好现在,紧接着我再次调用它,它返回
(lldb) po filter.isInvisible
NO
(lldb) po filter.isInvisible
<nil>
两个po命令之间只有1秒的差异。
答案 0 :(得分:3)
= [self.model objectForKey:@"Invisible"];
这将返回一个NSNumber
对象。如果您想要BOOL
原语,可以通过boolValue
方法获取它,
= [[self.model objectForKey:@"Invisible"] boolValue];
答案 1 :(得分:0)
由于您从BOOL
方法返回了isInvisible
值,因此我相信nil
等于0。所以0等于NO
或false
。因此filter.isInvisible
应该是NO
或false
。
请仅在代码中的if
语句中进行验证。
示例:
if (filter.isInvisible == NO){//Should be reached here}