NSPredicate 用于多对多关系
Posted
技术标签:
【中文标题】NSPredicate 用于多对多关系【英文标题】:NSPredicate for many - to - many relationship 【发布时间】:2015-04-21 06:35:32 【问题描述】:我有两个实体 Offers 和 Categories,它们通过多对多关系连接。
在实体Offers中有一个布尔属性叫做played和hasCategories,它是与Categories。
在实体Categories中还有一个名为following的布尔属性。
我想获取 played = true 的所有 Offers 及其所有类别 following = true
我该怎么做?
【问题讨论】:
【参考方案1】:这样的事情应该可以工作:
NSPredicate(format:"played = TRUE AND SUBQUERY(hasCategories, $c, $c.following = FALSE).@count = 0")
子查询检查所有相关类别都没有following == false
。
【讨论】:
你能解释一下 $c 是什么意思吗? @ChristosHadjikyriacou:它是一个“局部循环变量”,依次设置为“hasCategories”关系的每个元素。 (不幸的是,SUBQUERY 没有很好的文档记录。您会在 SO 上找到更多示例。) 非常感谢您的帮助。但它不起作用。我做了类似这样的事情 insted fetchRequest.predicate = NSPredicate(format: "played == NO and ANY hasCategories IN %@",Category.getAllFollowingCategories(self.managedObjectContext)) 但现在我必须关闭并重新打开应用程序才能获得结果出现 它给了我零结果。 @ChristosHadjikyriacou:奇怪。我做了一个快速测试,它按预期工作。以上是关于NSPredicate 用于多对多关系的主要内容,如果未能解决你的问题,请参考以下文章