【问题标题】:NSPredicate acting strange in NSFetchedResultsControllerNSPredicate 在 NSFetchedResultsController 中表现得很奇怪
【发布时间】:2011-02-04 13:41:10
【问题描述】:

我觉得这应该很简单,但它的行为很奇怪。

我有 3 个实体,具有这样的关系

实体 A > 实体 B 实体 C

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

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

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

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

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

为什么会这样?

【问题讨论】:

    标签: iphone core-data nspredicate nsfetchedresultscontroller


    【解决方案1】:

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

    @"SUBQUERY(entityB, $x, $x.entityC == %@).@count == 0"
    

    不过,它可能会起作用:

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

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

    【讨论】:

    • 谢谢!效果很好(第一个选项)。我之前在第二个示例中测试过格式,但似乎没有成功。我从未在文档中遇到过 SUBQUERY,我将不得不做一些进一步的阅读以避免将来出现问题。
    • @Scott L.,不幸的是 SUBQUERY 表达式文档有点分散。您应该始终提交错误报告 (bugreport.apple.com) 或在开发中心页面底部提交反馈,以解决此类文档故障。工程师们反应灵敏。祝你工作顺利。
    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多