假设我们有一个名为“Document”的实体和另一个名为“User”的实体。存在多对多关系,因此用户可以拥有一组文档,并且每个文档可以由多个用户拥有。其他文档的属性为“type”。
现在我想用“pdf”类型获取用户x的所有文档。你会如何访问这些数据?
据我所知,有两种方法:
通过其关系(user.documents)从用户检索所有文档,并使用NSPredicate过滤数组(这是否适用于复杂对象?)。
对具有两个谓词的“Documents”实体执行获取请求。第一个指定用户,第二个负责类型。
哪种方法比较好?或者甚至有更好的方法来实现这一目标? 我想第二种解决方案要贵得多。
答案 0 :(得分:3)
您的请求的实体应该是Document,您需要在谓词中使用ANY操作:
[NSPredicate predicateWithFormat: @"ANY users == %@ AND type == %@", userX, @"PDF"];
请参阅汇总操作部分:
答案 1 :(得分:0)
我使用Core Data超过一年但我刚开始使用关系和其他高级功能...
但是,在我看来,您可以尝试使用第一种方式并回答您的问题,我建议您仔细阅读Predicate Programming Guide
答案 2 :(得分:0)
找到最好的方法
NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray of Predicates]];
您也可以根据需要使用notPredicateWithSubpredicates和orPredicateWithSubpredicates。