获取核心数据对象,其中多对多关系包含集合中的所有对象

时间:2012-10-25 14:01:29

标签: cocoa core-data nspredicate nsfetchrequest

我正在寻找的是一种简洁的方法来获取由其关系唯一标识的核心数据对象。例如,给定数据模型:

enter image description here

...并且给定了一组NSManagedObject个节点,我想获取一个三角形,或者至少知道TriangleEntity是否存在如下:

NSSet *nodeSet = // a set of 3 NSManagedObject*s
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"TriangleEntity"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"corners CONTAINS ALL %@", nodeSet]; 

我不认为CONTAINS ALL是正确的语法 - 我知道我可以解压缩NSSet并获取

@"corners CONTAINS %@ AND corners CONTAINS %@ AND corners CONTAINS %@", setObj1, setObj2, setObj3

......但这看起来很傻。有更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:1)

以下谓词找到所有角落在给定集合中的三角形:

[NSPredicate predicateWithFormat:@"ALL corners IN %@", nodeSet]

nodeSet可以是NSSetNSArray