假设两个实体:EntityA和EntityB,由多对多关系连接。假设关系属性分别是relatedEntityBs和relatedEntityAs。我有一个EntityB实例的NSArray。我想找到所有与nsarray中的所有实例相关的EntityA实例。也就是说,如果数组是[entityB1,.....,entityBn]。查找所有与entityB1相关的EntityA实例,wntityB2直到entityBn。我该如何编写这种谓词?
答案 0 :(得分:2)
这个谓词应该这样做:
NSMutablArray *predicateArray = [NSMutableArray array];
for (int i=0;i<entityBArray.count;i++){
NSPredicate *subPredicate = [NSPredicate predicateWithFormat:@"ANY relatedEntityBs contains %@",[entityBArray objectAtIndex:i];
[predicateArray addObject:subPredicate] ;
}
NSCompoundPredicate *daddyPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:predicateArray];
基本上每个子谓词检查relatedEntityB
是否包含数组的单个对象,最后daddyPredicate
将它们全部与OR组合在一起。