私は3つのエンティティA、B、Cを持っています.
それらの関係は、A <-->>B、B<-->C です。
A には「タイプ」という属性があります。
AとBの関係はa2b、BとCの関係はb2cです。c_array は C オブジェクトのリストです。
私がやろうとしているのは、NSPredicate を使用して A を C と 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