ios - 对多个实体进行核心数据过滤

标签 ios core-data filtering

假设我们有一个名为“文档”的实体和另一个名为“用户”的实体。存在多对多关系,因此用户可以拥有一组文档,每个文档可以由多个用户拥有。更多文档具有“类型”属性。

现在我想获取用户 x 的所有类型为“pdf”的文档。您将如何访问这些数据?

据我所知有两种方式:

  1. 通过关系 (user.documents) 从用户中检索所有文档,并使用 NSPredicate 过滤数组(这适用于复杂对象吗?)。

  2. 使用两个谓词对“文档”实体执行提取请求。第一个指定用户,第二个负责类型。

哪种方法更好?还是有更好的方法来实现这一目标? 我想第二种解决方案要贵得多。

最佳答案

您的请求的实体应该是 Document,并且您需要在谓词中使用 ANY 操作:

[NSPredicate predicateWithFormat: @"ANY users == %@ AND type == %@", userX, @"PDF"];

请参阅关于聚合操作的部分:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html

关于ios - 对多个实体进行核心数据过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7306291/

相关文章:

ios - 任何人都知道如何使表索引成为我的核心数据名称属性的前 4 个字符?

macos - SWIFT OS X - 从持久存储中删除托管对象 : fatal error

django - 使用过滤器(Django)将对象传递给详细信息 View

ios - 在运行时设置图像时不遵守 UIImageView 的内容模式

ios - React Native 响应式 View Iphone x

ios - 在哪里可以找到 xamarin ios 设备日志?

ios - 在 Swift 中追加字符串

ios - Swift - 删除 CoreData 行

javascript - 带有远程过滤器和排序的 ExtJS 无限滚动网格

google-analytics - 如何在Google Analytics(分析)报告中过滤笔记本电脑/笔记本电脑用户