核心数据中有一个变量。我想检测它为零的情况,null或其他没有好的值,如222或333.
这应该是微不足道的,但我会陷入Objective-C的语法中。
以下代码不正在运作:
if (_item.id!=nil && _item.id!=0) {
//do something
}
注意id应该是NSNumber。
定义为
@property (nonatomic, retain) NSNumber * id;
我应该澄清,当值以0记录到控制台时,它无效。
鉴于变量类型和核心数据的工作方式,我无法告诉您导致变量登录到控制台的原因是' 0'但有些事情导致它这样做。基本上,我想排除值不是非零整数的情况(数学而非计算机科学术语)。
答案 0 :(得分:5)
要检查存储在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
返回非零值。
答案 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自己的原生命名政策相冲突