ios - 核心数据多对多关系查询

标签 ios objective-c core-data nspredicate

假设两个实体: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/

相关文章:

iphone - 在 CoreData 中使用 NSInMemoryStoreType 会丢失数据吗?

ios - 在 Swift 3 中解析 UITextDocumentProxy

ios - 如何在 iOS 应用程序内联播放视频?

iphone - 获取 NSUserDefaults 时崩溃

ios - CoreData 的问题

ios - 在核心数据中,你能创建一个谓词来获取一系列 URI 吗?

objective-c - 关闭键盘和按钮

iphone - iOS/iPad 的消息队列 - 类似于 MSMQ?

ios - UIView 与 UITableView 和 UIGestureRecognizer 突然停止手势识别

ios - iOS-如果已经购买了应用本身,则可以恢复应用购买