CoreData - 使用NSSet进行NSPredicate

时间:2011-08-29 20:47:33

标签: objective-c core-data many-to-many nspredicate

我有一个具有以下关系的数据库:

enter image description here

A< - >>乙

A:会员表; B:活动表

会员有很多活动,每个活动都有很多会员。所以,有多对多的关系。

当用户从tableView中选择一个Activity时,应该使用具有该Activity的所有成员推送一个新的tableView。

在“child”tableView的NSPredicate中,我这样做:

request.entity = [NSEntityDescription entityForName:@"Members" inManagedObjectContext:context];    
request.predicate = [NSPredicate predicateWithFormat:@"memberActivity = %@", [NSSet setWithObject:activity]];

结果是:

  

***因未捕获的异常而终止应用   'NSInvalidArgumentException',原因:'这里不允许使用多对键'

我做错了什么?

谢谢,

RL

1 个答案:

答案 0 :(得分:7)

尝试

request.predicate = [NSPredicate predicateWithFormat:@"self in %@", [activity hasMembers]];

我对CoreData的这种复杂性没有做太多,但我的理解是查询应该使用CoreData维护的托管对象ID返回hasMembers集中的所有Member对象。让我知道它是怎么回事。