检测NSNumber是否为零,零或0

时间:2016-01-16 20:28:46

标签: objective-c null

核心数据中有一个变量。我想检测它为零的情况,null或其他没有好的值,如222或333.

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

以下代码正在运作:

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

注意id应该是NSNumber。

定义为

@property (nonatomic, retain) NSNumber * id;

我应该澄清,当值以0记录到控制台时,它无效。

鉴于变量类型和核心数据的工作方式,我无法告诉您导致变量登录到控制台的原因是' 0'但有些事情导致它这样做。基本上,我想排除值不是非零整数的情况(数学而非计算机科学术语)。

2 个答案:

答案 0 :(得分:5)

要检查存储在NSNumber中的数值,您必须调用一种为您提供基本类型的方法。

e.g。 integerValueunsignedLongLongValuedoubleValue

要正确检查nil和值0,您需要具备以下条件:

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

由于向nil引用发送邮件会返回0,因此您可以使用快捷方式:

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

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

答案 1 :(得分:2)

由于此NSManagedObject的类型为NSNumber,只需检查intValue。

  if (!_item.id.intValue){
       //Method will stop in here if the id is nil/0 etc.
  }

但是,建议不要命名变量 id ,建议您将其重命名为 itemId

同样地,您不应该将某些内容命名为“string”或“new”,因为这些与Apple自己的原生命名政策相冲突