排除某些对象的多对多关系的NSFetchRequest无法按预期工作

时间:2010-08-27 08:02:42

标签: iphone core-data

这些天我在NSFetchRequest周围挣扎。 我的数据模型如下所示:

Post <->> Category

现在我需要一个获取请求来获取category.name属性不是“xxx”的所有帖子。 查看NSFetchRequest的文档应该是:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NONE category.name == %@", categoryName]

但这导致一个空列表(该请求由UFableView中的NSFetchedResultsController使用。

文档说:

  

NONE   不指定以下表达式中的元素。例如,NONE children.age&lt; 18.这在逻辑上等同于NOT(ANY ......)。

如果我将我的谓词反转为

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY category.name == %@", categoryName]

列表中包含我想要从该列表中排除的对象。

我在这里缺少什么?

提前致谢

1 个答案:

答案 0 :(得分:2)

您拥有的谓词形式是正确的。

最简单的解释是你没有与“@”NONE category.name ==%@“谓词匹配的对象。这可以解释为什么反向有效。

我建议你:

  1. 使用NSLog记录谓词并查看每次谓词实际上是什么
  2. 获取所有Post个对象,将返回的对象数与“ANY”谓词返回的对象数进行比较。如果他们是相同的那么......
  3. ...记录category.name值以查看它们中的任何一个是否与“NONE”谓词匹配。
  4. 我认为应该让你找到问题所在。