2010-08-27 70 views
2

这些天我在NSFetchRequest周围挣扎。 我的数据模型是这样的:NSFetchRequest对排除一些对象的多对多关系无法正常工作

Post <->> Category

现在我需要为获取请求获得的所有帖子,其中category.name属性不是“XXX”。 看着为NSFetchRequest的文档应该是:

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

但这会导致空列表(该请求是在UITableView的使用NSFetchedResultsController

文档说:

NONE 指定以下表达式中的任何元素,例如NONE children.age < 18.这在逻辑上等于NOT(ANY ...)。

如果我颠倒我的谓词

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

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

我在这里失踪了什么?

在此先感谢

回答

2

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

最简单的解释是,你必须匹配“@” NONE category.name ==%@”谓词没有物体这可以解释为什么逆工程

我建议你:。

  1. 登录用的NSLog谓语,看看谓语实际上是每次
  2. 抓取所有Post比较对象的对象由“ANY”谓词返回的对象的计数返回的数量。如果它们相同,则。 ..
  3. ...记录category.name值以查看它们中的任何一个是否匹配“NONE”谓词。

我认为应该让你找到问题。

相关问题