多对多关系核心数据查询特定集合

在此处输入图像描述

public enum Ability: String { case newcomer = "Newcomer" case beginner = "Beginner" case intermediate = "Intermediate" case advanced = "Advanced" } public enum Group: String { case solo = "Solo" case duo = "Duo" case team = "Team" } 

我想找到符合以下条件的所有表演。

 ability == "Beginner" group == "Duo" performers == "Jane Davies" && "Alice Evans" 

该文档表明不支持核心数据中的聚合操作,这是令人惊讶的。 之前已经问过这样的问题并建议使用’Any’。

根据我的理解,’Any’会返回包括’Jane’或’Alice’或’Jane&Alice’的表演吗? 我只想要包括’Jane&Alice’在内的表演。

我该如何为此查询编写谓词?

谢谢

使用(不同的) Performer对象列表,以下谓词应该可以找到与这些执行者完全相关的所有Performance对象:

 let perf1 = ... // Performer object for "Jane Davies" let perf2 = ... // Performer object for "Alice Evans" let list = [perf1, perf2] let predicate = NSPredicate(format: "performers.@count = %ld AND ALL performers in %@", list.count, list) 

但显然不是。 解决方法是使用SUBQUERY:

 let predicate = NSPredicate(format: "performers.@count = %ld AND SUBQUERY(performers, $p, $p in %@).@count = %ld", list.count, list, list.count)