2013-08-28 108 views
0

我有3 NSManagedObjet s;人,东西和收藏。核心数据搜索的NSPredicate

enter image description here

我想用一个NSPredicate获得的所有Collection s表示ThePerson有一个列表。

示例:Scott具有objectA和objectB,它们位于集合Numbers和Collection中的Letters和object1中。

我希望能够执行获取请求并获取集合字母和数字。

我想:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY stuffs.persons == %@", person]; 

和:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(stuffs, $s, ANY $s.persons == %@)", scott]; 

有什么建议?

回答

1

因为它似乎你已经有了一个ThePerson对象的引用,你不需要做一个获取或使用谓词。你可以遍历你声明的关系来获取集合。您可以通过使用得到所有的Collection s表示ThePerson有:

NSSet *collections = [person valueForKeyPath:@"stuffs.collections"]; 
+0

有,我忘了提另一个条件:斯科特的字母'Collection'可能包含对象A和对象B,而仁的书收集可能只包含对象A。有了这个要求,我不相信这个解决方案会起作用吗?或者我会错吗?对不起,我原来并没有在这个问题中说明这一点。 – Padin215