【发布时间】:2012-03-05 19:06:15
【问题描述】:
我的 CoreData 模型有 3 个具有一对多关系的实体:
工作 > 组 > 人
所以小组可以做不同的工作,个人可以参与不同的小组。
我想获取所有从事某项工作的人。
我的想法建议我写这样的东西:
任何组。任何工作 == '一些工作'
但我知道这是错误的。 :) 下一个谓词是否正确并按我的意思做:
ANY group.job == 'some job'
?
【问题讨论】:
我的 CoreData 模型有 3 个具有一对多关系的实体:
工作 > 组 > 人
所以小组可以做不同的工作,个人可以参与不同的小组。
我想获取所有从事某项工作的人。
我的想法建议我写这样的东西:
任何组。任何工作 == '一些工作'
但我知道这是错误的。 :) 下一个谓词是否正确并按我的意思做:
ANY group.job == 'some job'
?
【问题讨论】:
您无需使用谓词来查找所有从事某项工作的人。
NSSet* groups = someJob.groups; //this will get all group that does the job
NSMutableSet* people = [NSMutableSet set];
for(Group* aGroup in groups){
[people unionSet:aGroup.people]; //this will add the people in this group
}
//now people set has all the people that does the job
【讨论】:
虽然 NSPredicate 确实支持点语法,但不支持对多关系。也许最好的解决方案是使用匹配 @"ANY job LIKE group" 和 @"ANY group LIKE job" 的谓词执行两个单独的 fetch 请求,并将结果相交。
【讨论】: