Учитывая следующую базовую модель данных:
-> : 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
:
Кодниже работает, но совершенно некрасиво, так как я должен жестко закодировать NSP-предикат на основе числа (здесь это 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]];
Как мне переписать предикат, чтобы он был более универсальным? Это должно быть так очевидно, но я просто не вижу его ...