Учитывая следующую базовую модель данных:
-> : to-one releationship
->>: to-many relationship
Entity A ->> Entity B
Entity B -> A // each B belongs to exactly one A
Entity B ->> B // a B can be related to other B's
Итак, в классе A
:
@property (nonatomic, retain) NSSet *Bs;
В классе B
:
@property (nonatomic, retain) A *A;
@property (nonatomic, retain) NSSet *Bs;
Предположим, у меня есть NSArray * myArray
, содержащий (Bj, Bk)
.
Я хочу получить все B
, которые принадлежат Ax
и связаны с Bj
и Bk
:
Приведенный ниже код работает, но совершенно уродлив, поскольку мне нужно жестко закодировать NSPredicate на основе числа (здесь 2, но может быть 10 или около того) B
в массиве:
NSEntityDescription *fetchedEntity = [NSEntityDescription entityForName:@"B" inManagedObjectContext:self.managedObjectContext];
[NSPredicate predicateWithFormat:@"A == %@ and (Bs contains %@) and (Bs contains %@)", Ax, [myArray objectAtIndex:0], [myArray objectAtIndex:1]];
Как я могу переписать предикат, чтобы он был более общим? Это должно быть так очевидно, но я просто не вижу этого ...