我正在尝试使用NSPredicate来过滤核心数据获取请求。谓词字符串如下所示:
“stringProperty =%@&& dateProperty>%@&& oneToOneRelationship!= nil”
这不会返回任何对象。但是,如果我省略它的最后一个子句。如果我将最后一个子句改为“oneToOneRelationship = nil”,那么它确实如此。当然,最后两种情况不会返回我真正想要的数据。 :)
是否有正确的方法来搜索关系存在且不是零的一对一关系?看起来这个谓词应该有效,但事实并非如此。这是使用Xcode 6.1 beta的当前Yosemite测试版。
有人有任何想法吗?
答案 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];