NSPredicate для отношения ко многим, где отношение (NSSet) должно содержать Сущности, определенные в массиве NSArray

Учитывая следующую базовую модель данных:

-> : 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]];

Как я могу переписать предикат, чтобы он был более общим? Это должно быть так очевидно, но я просто не вижу этого ...

1
задан codeclash 27 September 2010 в 20:22
поделиться