0

假设有两个实体:EntityA 和 EntityB,通过多对多关系连接。假设关系属性分别是relatedEntityBs 和relatedEntityAs。我有一个 NSArray 的 EntityB 实例。我想找到与 nsarray 中的所有实例相关的所有 EntityA 实例。也就是说,如果数组是 [entityB1,.....,entityBn]。查找与 entityB1,wntityB2 直到 entityBn 相关的所有 EntityA 实例。我该如何写这种谓词?

4

1 回答 1

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 将它们全部组合起来。

于 2013-03-07T19:53:16.987 回答