排除某些对象的一对多关系上的 NSFetchRequest 无法按预期工作
Posted
技术标签:
【中文标题】排除某些对象的一对多关系上的 NSFetchRequest 无法按预期工作【英文标题】:NSFetchRequest on to-many-relationship excluding some objects does not work as expected 【发布时间】:2010-08-27 08:02:41 【问题描述】:这些天我在 NSFetchRequest 上苦苦挣扎。 我的数据模型如下所示:
Post <->> Category
现在我需要一个获取请求来获取 category.name 属性不是“xxx”的所有帖子。 查看 NSFetchRequest 的文档应该是:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NONE category.name == %@", categoryName]
但这会导致一个空列表(该请求由 NSFetchedResultsController 在 UITableView 中使用。
文档说:
无 不指定以下表达式中的任何元素。例如,NONE children.age
如果我将谓词反转为
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY category.name == %@", categoryName]
该列表包含我想要从该列表中排除的对象。
我在这里错过了什么?
提前致谢
【问题讨论】:
【参考方案1】:你的谓词形式是正确的。
最简单的解释是您没有匹配“@”NONE category.name == %@”谓词的对象。这可以解释为什么逆向有效。
我建议你:
-
用 NSLog 记录谓词,看看每次谓词的实际情况
获取所有
Post
对象将返回的对象计数与“ANY”谓词返回的对象计数进行比较。如果它们相同,那么...
...记录category.name
值以查看其中是否有任何匹配“NONE”谓词。
我认为这应该可以让您找到问题所在。
【讨论】:
以上是关于排除某些对象的一对多关系上的 NSFetchRequest 无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章