2010-04-05 35 views
2

我觉得这应该很简单,但它的表现很奇怪。NSPredicate在NSFetchedResultsController中扮演着奇怪的角色

我有3个实体,具有这样

实体A <的关系 - >>实体B < < - >实体Ç

我有一个NSFetchedResults控制器和我试图过滤实体A使用以下谓词的结果。

[NSPredicate predicateWithFormat:@"NONE entityB.entityC == %@", self.entityC]; 

当我尝试运行应用程序时,输出显示没有结果。我可以将谓词稍微改为:

[NSPredicate predicateWithFormat:@"ANY entityB.entityC == %@", self.entityC]; 

而且它只显示我希望过滤的结果。

这是怎么发生的?

回答

3

我想你可能需要一个SUBQUERY表达:

@"SUBQUERY(entityB, $x, $x.entityC == %@)[email protected] == 0" 

虽然,它可能工作要做到:

@"NOT (ANY entityB.entityC == %@)" 

(注:我没有测试过第二个选项)

+0

谢谢!这很好用(第一种选择)。我之前已经在第二个例子中测试了格式,但似乎没有成功。我从未在文档中遇到过SUBQUERY,为了避免将来出现问题,我将不得不进一步阅读。 – 2010-04-05 20:32:12

+0

@Scott L.不幸的是,SUBQUERY表达式文档有点分散。您应该始终提交错误报告(http://bugreport.apple.com)或在开发中心页面的底部提交反馈,以了解此类文档的缺陷。工程师非常敏感。祝你工作顺利。 – 2010-04-05 20:39:49

+0

感谢您的提示,我会牢记这一点。 – 2010-04-06 02:57:59