目标C:检查int是否存在,包括零

Ian*_*ray 1 cocoa-touch objective-c ios

我正在处理地址簿,我想检查它们是否是正在创建的联系人的ID集.但是,地址簿ID是一个整数,我担心它可能是零.所以我想做点什么......

if (_contact.id) { ... }
Run Code Online (Sandbox Code Playgroud)

但是,我冒这个风险假设与id 0的联系不存在,即使它确实存在.这是一个难以测试的问题,因为它涉及设置新的地址簿.

所以我的问题是,有没有办法检查联系人是否实际上是NULL/Nil没有它假设0表示它是空的?就像一个"整数"函数或某种性质的东西?

Seb*_*ian 6

如果我理解正确,您想检查属性是否已设置.

您可以添加另一个@property (readonly, getter=isIdSet) BOOL idSet并在setter中设置支持iVar id:

- (void)setId:(int)id {
    _id = id;
    _idSet = YES;
}
Run Code Online (Sandbox Code Playgroud)

然后检查一下 if (contact.idSet)

或者,您可以使用NSNumber对象并检查属性是否nil.