2014-01-07 3 views
0

У меня есть 3 сущности в модели графа (https://dl.dropboxusercontent.com/u/2669769/model.png):NSPredicate с тремя лицами

< компании - >> Person < < -> Роль

Я хочу, чтобы извлечь из выбранной компании список сотрудников с их роли, но мой предикат кажется неполным. Любое предложение?

NSEntityDescription *entity = [NSEntityDescription entityForName:@“Person” inManagedObjectContext:self.managedObjectContext]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 

request.predicate = [NSPredicate predicateWithFormat:@"self in %@",[selectedCompany employee]]; 
[request setEntity:entity]; 
request.resultType = NSDictionaryResultType; 

NSError *error; 
NSArray *fetchedObjects = [_managedObjectContext executeFetchRequest:request error:&error]; 

NSLog(@"%@",[fetchedObjects valueForKey:@“firstName”]); // OK 
NSLog(@"%@",[fetchedObjects valueForKey:@“inRole.name”]); // NULL!!! 
+0

Во-первых, в вашем предикате IN указывает, что аргумент правой руки является массивом; [selectedCompany employee] возвращает массив? Во-вторых, выбор типа результата словаря не может возвращать отношения, которые относятся ко многим; это отношение «inRole» ко многим? –

+0

Спасибо, Патрик, я удалил request.resultType = NSDictionaryResultType; и теперь отношения продолжаются. – bioglp

+0

Если вы не ответите на вопрос в качестве ответа, система оставит его открытым навсегда И вы не получите кредит. –

ответ

0

The NSDictionaryResultType на ваш запрос выборки не позволяет ко-многим. Вот почему inRole.name не заселен в вашем словаре.

Смежные вопросы