Предикат для дочерних объектов iphone

Я вижу это в руководстве по программированию предикатов:

Если вы используете отношение ко многим, конструкция предиката немного отличается. Например, если вы хотите получить отделы, в которых хотя бы один из сотрудников имеет имя «Мэтью», используйте оператор ANY, как показано в следующем примере:

NSPredicate *predicate = [NSPredicate predicateWithFormat:
    @"ANY employees.firstName like 'Matthew'"];

С помощью приведенной выше конструкции он вернет отдел со всеми объектами сотрудников, связанных с ним, при условии, что хотя бы один из сотрудников имеет имя «Мэтью».

Я хотел бы изменить это, чтобы получать ТОЛЬКО тех сотрудников, имя которых «Мэтью». Таким образом, если в отделе есть только 2 сотрудника, совпадающие с этим именем, должны быть возвращены только 2 объекта сотрудников.

Как я могу этого добиться? благодаря.


person user542584    schedule 05.05.2011    source источник
comment
Я не уверен, но beginswith вам поможет?   -  person visakh7    schedule 05.05.2011
comment
Привет, к сожалению, нет. использование beginWith путем замены подобного дает мне те же результаты. Это не позволяет мне убрать ЛЮБОЕ дополнение в начале из-за отношения ко многим. в любом случае спасибо за ответ.   -  person user542584    schedule 05.05.2011


Ответы (1)


Вы выполняете это снова с набором Department объектов, поэтому вы можете получить обратно только Department объектов. Если вы хотите вместо этого Employee объектов, вам нужно будет сделать что-то вроде этого:

Department *aDepartment = ...;
NSArray *employees = [aDepartment employees];
NSPredicate *filter = [NSPredicate predicateWithFormat:@"firstName = 'Matthew'"];
NSArray *matthews = [employees filteredArrayUsingPredicate:filter];

Кроме того, поскольку в вашем фильтре LIKE нет символов ? или *, он эквивалентен сравнению "isEqual:".

person Dave DeLong    schedule 05.05.2011