检测 NSNumber 是否为零、nil 或 0

2023-12-14

我的核心数据中有一个变量。我想检测为零、空或其他没有好的值(例如 222 或 333)的情况。

这应该是微不足道的,但我正在陷入 Objective-C 的语法。

以下代码是not在职的:

if (_item.id!=nil && _item.id!=0) {
//do something
}

值得注意的是 id 应该是一个 NSNumber。

它被定义为

@property (nonatomic, retain) NSNumber * id;

我应该澄清一下,当控制台中的值记录为 0 时,它不起作用。

鉴于变量类型和核心数据的工作方式,我无法告诉您是什么原因导致变量在控制台中记录为“0”,但某些原因导致它这样做。基本上,我想排除该值不是非零整数(用数学术语,而不是计算机科学术语)以外的任何值的情况。


检查存储在 a 中的数值NSNumber,您必须调用为您提供原始类型的方法之一。

e.g. integerValue, unsignedLongLongValue, doubleValue

为了正确检查nil和一个值0,您需要以下内容:

if (_item.id != nil && [_item.id intValue] != 0) {
    // code here
}

因为发送消息给nil参考回报0,你可以走捷径:

if ([_item.id intValue] != 0) ...

这有效是因为_item.id必须为非零才能返回非零值intValue.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测 NSNumber 是否为零、nil 或 0 的相关文章

随机推荐