ios - BOOL 在 objective-c 中为值 0 返回 YES?

标签 ios objective-c xcode

我的模型中有 Invisible = 0,我正在尝试使用此行在 BOOL 中获取它。

BOOL invisible = [self.model objectForKey:@"Invisible"];

但不可见是 YES 而不是 NO。我也试过 bool 但它也是如此。我使用 [[self.model objectForKey:@"Invisible"] class] 检查了对象的类,它显示了 _NSCFBoolean。这里出了什么问题?模型是 NSDictionary。

enter image description here

更新

好的,所以我找到了真正的问题。我有 Filter 类,其中我有 getter isInvisible 并且代码是

- (BOOL)isInvisible {
     return [[self.model objectForKey:@"Invisible"] boolValue]; 
   }

当我第一次调用它时,它返回 NO。哪个好。现在我立即再次调用它并返回 。奇怪的。

(lldb) po filter.isInvisible 
NO 
(lldb) po filter.isInvisible 
<nil>

两个 po 命令之间只有 1 秒的差异。

最佳答案

= [self.model objectForKey:@"Invisible"];

这将返回一个 NSNumber 对象。如果你想要一个 BOOL 原语,你可以通过 boolValue 方法得到它

= [[self.model objectForKey:@"Invisible"] boolValue];

关于ios - BOOL 在 objective-c 中为值 0 返回 YES?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59316521/

相关文章:

objective-c - 选择器 Objective-C 设置

ios - 防止在 Xcode 中使用 iOS iPhone App 部署(禁用)WatchKit App

ios - UILabel 调整其 SuperView 的大小?

objective-c - iOS – Facebook SDK,解析结果

ios - 通用链接转到 Safari 而不是调用它的应用程序

ios - 返回 NULL 的 tableView 单元格

ios - 使用 Swift 3 拉动刷新和 Alamofire

iphone - 如何使用 GData 对 iPhone 上的 Google 用户进行身份验证?

ios - 如何在我的 tableView 单元格中进行自定义操作?

ios - 使用存储在数组中的 URL 从应用程序启动 Safari