根据以下数据模型
根据用户的输入,我创建了一个名为selectedTags的实体Tag的ManagedObjects NSSet。
我的问题:
[NSPredicate predicateWithFormat:@"ANY entryTags IN %@", selectedTags];
...这将返回任何在selectedTags集合中具有至少一个entryTag的Entry。
我想要一些类似的东西:
[NSPredicate predicateWithFormat:@"ALL entryTags IN %@", selectedTags];
...请注意,唯一的更改是将“ANY”更改为“ALL”。这说明了我想要的,但没有用。
为了制定结果,我期望:
我正在寻找一种解决方案,该解决方案将仅返回所有entryTags都在selectedTags列表中的Entries(但同时,如果可能的话,不一定是相反的方式)。
进一步说明:
妈妈
爸爸
礼物
(入口)她是她.....(标签)妈妈
(entry)he is a he ........(tag)dad
妈妈的礼物(赠品)...妈妈,礼物
(输入)爸爸的礼物.....(标签:)爸爸,礼物
如果selectedTags包含“妈妈”和“礼物”,则将显示条目“爸爸的礼物”,因为它具有标签“礼物”。我宁愿它不显示:)
最佳答案
到目前为止,这是肯定的答案:
[NSPredicate predicateWithFormat:@"SUBQUERY(entryTags, $tag, $tag IN %@).@count = %d", selectedTags, [selectedTags count]];
美丽的。
感谢Dave DeLong。
关于objective-c - 如何在NSPredicate中使用 “ALL”聚合操作来过滤基于CoreData的集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5302611/