让我们假设我们有一个名为“Document”的实体和另一个名为“User”的实体 . 存在多对多关系,因此用户可以拥有一组文档,并且每个文档可以由多个用户拥有 . 其他文档具有属性“类型” .
现在我想获取用户x的所有文档,类型为“pdf” . 你会如何访问这些数据?
据我所知,有两种方法:
-
通过其关系(user.documents)从用户检索所有文档,并使用NSPredicate过滤数组(这是否适用于复杂对象?) .
-
在具有两个谓词的“Documents”实体上执行获取请求 . 第一个指定用户,第二个负责类型 .
哪种方法更好?或者甚至有更好的方法来实现这一目标?我想第二种解决方案要贵得多 .
3 回答
您的请求的实体应该是Document,并且您需要在谓词中使用ANY操作:
请参阅 Aggregate Operations 部分:
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html
找到最好的方法
您还可以根据需要使用notPredicateWithSubpredicates和orPredicateWithSubpredicates .
链接到文档http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSCompoundPredicate_Class/Reference/Reference.html
我刚刚开始使用人际关系和其他高级功能......
但是,在我看来,你可以尝试使用第一种方式并回答你的问题,我建议你仔细阅读Predicate Programming Guide