MacOS:NSPredicate找到"一对一"关系不是零

时间:2014-09-25 21:26:35

标签: macos core-data nspredicate

我正在尝试使用NSPredicate来过滤核心数据获取请求。谓词字符串如下所示:

“stringProperty =%@&& dateProperty>%@&& oneToOneRelationship!= nil”

这不会返回任何对象。但是,如果我省略它的最后一个子句。如果我将最后一个子句改为“oneToOneRelationship = nil”,那么它确实如此。当然,最后两种情况不会返回我真正想要的数据。 :)

是否有正确的方法来搜索关系存在且不是零的一对一关系?看起来这个谓词应该有效,但事实并非如此。这是使用Xcode 6.1 beta的当前Yosemite测试版。

有人有任何想法吗?

2 个答案:

答案 0 :(得分:3)

实际上,"!= nil"测试工作正常。事实证明,虽然我认为一对一的关系正在设定,但实际上并非如此。所以,谓词工作正常。当然,我的代码是错误的。

答案 1 :(得分:2)

使用oneToOneRelationship.@count != 0

因此,以下代码应该有效:

<强>夫特

let predicate = NSPredicate(format: "stringProperty == %@ && dateProperty > %@ && oneToOneRelationship.@count != 0", argumentArray:[stringProperty, dateProperty])
fetchRequest.predicate = predicate

<强>目标C

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"stringProperty == %@ && dateProperty > %@ && oneToOneRelationship.@count != 0", stringProperty, dateProperty];
[fetchRequest setPredicate:predicate];