我在核心数据中有一个变量.我想检测它是零零的情况,null或其他没有一个很好的值,如222或333.
这应该是微不足道的,但我陷入了Objective-C的语法.
以下代码无效:
if (_item.id!=nil && _item.id!=0) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
值得注意的是id应该是NSNumber.
它被定义为
@property (nonatomic, retain) NSNumber * id;
Run Code Online (Sandbox Code Playgroud)
我应该澄清,当值作为0登录到控制台时,它不起作用.
鉴于变量类型和核心数据的工作方式,我不能告诉你是什么原因导致变量以"0"的形式登录到控制台,但有些事情导致它这样做.基本上,我想排除值不是非零整数的情况(数学而非计算机科学术语).
要检查存储在a中的数值NSNumber,必须调用一个为您提供基本类型的方法.
例如integerValue,unsignedLongLongValue,doubleValue
要正确检查nil和值0,您需要以下内容:
if (_item.id != nil && [_item.id intValue] != 0) {
// code here
}
Run Code Online (Sandbox Code Playgroud)
因为向nil引用发送消息会返回0,所以您可以使用快捷方式:
if ([_item.id intValue] != 0) ...
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为_item.id必须是非零才能从中返回非零值intValue.
| 归档时间: |
|
| 查看次数: |
3857 次 |
| 最近记录: |