ios - 如果语句有时与 id BoolValue 比较失败?

标签 ios objective-c nsstring comparison boolean

我从网络上提取 JSON 格式的数据,当我使用“ValueForKeyPath”解析数据时,它将字符串值存储为 id 对象。

所以我将数据存储到 NSMutableArray 在调试器窗口中,它显示添加为 (id) null 的所有元素。

我有一个 if 语句

if ([[self.activeCategories objectAtIndex:selected] boolValue] == true)

有时我会说 20% 的情况下它会失败 if 语句,而实际上它不应该失败。
我想知道是否是因为 self.activeCategories 正在存储 id 类型。我需要对数组内的所有对象执行 [NSString stringWithFormat@"%@", x] 吗?似乎当我只是使用 (NSString *) 直接转换它时,它仍然是调试器中的 id 类型。

这对我来说是一个非常奇怪的错误......因为该错误不能始终重现。

最佳答案

像这样尝试一下:

if ([[self.activeCategories objectAtIndex:selected] boolValue])

据此article BOOL 可能包含 0 和 1 以外的值,这可能导致比较失败。

关于ios - 如果语句有时与 id BoolValue 比较失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16368663/

相关文章:

IOS UICollectionView 和 UIScrollView 回收问题

iphone - 如何使用 Autoresizing Mask 将 UIView 锚定在中间点之外的几个像素?

objective-c - 替换 NSDictionary 中的所有 NSNull 对象

objective-c - NSUUID 小写字符

objective-c - 如何将 NSInteger 转换为二进制(字符串)值

ios - UILabel sizeToFit 仅适用于关闭自动布局的情况

ios - Swift 以编程方式导航到另一个 View Controller /场景

objective-c - 适用于 iOS 的 SBJson 静态库

objective-c - 为什么prepareWithInitationTarget是: specific to NSUndoManager?

objective-c - NSComboBox : How to tell user has typed in information that is not in the pop up list and read it