假设两个实体:EntityA 和 EntityB,通过多对多关系连接。假设关系属性分别是 relatedEntityBs 和 relatedEntityAs。我有一个 NSArray 的 EntityB 实例。我想找到所有与 nsarray 中的所有实例相关的 EntityA 实例。也就是说,如果数组是 [entityB1,.......,entityBn]。查找与 entityB1、wntityB2 到 entityBn 相关的所有 EntityA 实例。我该如何编写这种谓词?
最佳答案
这个谓词应该这样做:
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 组合在一起。
关于ios - 核心数据多对多关系查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15270755/