假设我们有一个名为“Document”的实体,另一个名为“User”。有多对多的关系,用户可以拥有一组文档,每个文档可以由多个用户拥有。其他文档具有“类型”属性。对多个实体的核心数据过滤
现在我想为类型为“pdf”的用户x提取所有文档。你将如何访问这些数据?
至于我可以看到有两种方式:
检索用户的所有文件,其关系(user.documents)和过滤与NSPredicate阵列(做这项工作具有复杂目的?)。
用两个谓词对“文档”实体执行提取请求。第一个指定用户,第二个负责该类型。
哪种方法更好?还是有更好的方法来实现这一目标? 我想第二个解决方案要贵得多。
这是比第一种方式更有效?再次获取用户似乎是不必要的,因为我已经有一个用户对象引用其文档。 – Dominik
上面的谓词将使用单个SQL查询为您的userX获取所有PDF文档。即使你有文档的引用,但它们可能是错误的,所以过滤一个数组可能会导致每个单独文档的SQL查询被触发 - 效率更低。 –
要查看执行了哪些SQL查询,请将'-com.apple.CoreData.SQLDebug 1'添加到启动参数 –