iOS / core-data:检查核心数据中属性是否有值的最佳方法是什么?

时间:2015-08-25 19:04:26

标签: ios core-data

这个问题有很多变种,但似乎都没有得到我需要的东西。

我有一个对象,联系人,这是一个核心数据实体联系人。我想显示尽可能多的地址,所以如果例如没有拉链,我会把它留下来。

我尝试了以下变体但没有取得任何成功:

if (self.contact.state && !self.contact.zip) {
NSString *location = contact.state;
}

and also 
self.contactZip.text = self.contact.zip;
if (length(self.contactZip.text)<1) {
NSString *location = contact.state;
}

有人能建议正确的方法吗?

THX。

1 个答案:

答案 0 :(得分:0)

检查Core Data是否存在值的方法(与任何Objective-C属性一样)是检查并查看值是否为nil:

if (self.contact.zip == nil) {
    ...
}

尽管!语法很常见,但最好编写代码以专门检查nil [部分原因是它使您的代码更清楚地了解它正在做什么。部分原因是!是一个布尔运算符,由于语言的实现细节而在检查nil时才会起作用。]。

如果属性是字符串,而您实际想知道的是它是否具有非零长度,请检查两者(因为零长度字符串与nil值不同)。在Objective-C中,您可以利用语言对nil方法调用的处理并执行

if ([self.contact.zip length] == 0) {
...
}

在nil参数上调用length将返回零,因此在ObjC中,这最终会同时检查nil和零长度。