我有三个实体A,B,C。
它们之间的关系是:A<-->>B,B<-->C。
A 有一个称为“类型”的属性。
A和B的关系是a2b,B和C的关系是b2c。c_array 是 C 对象的列表。
我想要做的是使用 NSPredicate 通过 C 和 A 的属性“类型”过滤 A。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"A" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSMutableArray *parr = [NSMutableArray array];
for (C *c in c_array) {
[parr addObject:[NSPredicate predicateWithFormat:@"ANY a2b.b2c = %@", c]];
}
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:[NSCompoundPredicate orPredicateWithSubpredicates:parr], [NSPredicate predicateWithFormat:@"type = %i", 0], nil]];
[fetchRequest setPredicate:predicate];
但我得到的不是我所期望的。所以我也尝试了其他。
predicate = [NSPredicate predicateWithFormat:@"type=%i AND (0!=SUBQUERY(a2b,$a2b,$a2b.b2c IN %@).@count)", 0, c_array];
意想不到的结果又发生了!有人可以帮帮我吗?TT