根据以下数据模型

根据用户的输入,我创建了一个名为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/

10-10 20:38