Предикат для дочерних объектов iphone - PullRequest
0 голосов
/ 05 мая 2011

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

Если вы используете отношение ко-многим, конструкция предиката немного отличается. Если вы хотите выбрать отделы, в которых хотя бы один из сотрудников имеет имя «Мэтью», например, вы используете ЛЮБОЙ оператор, как показано в следующем примере:

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

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

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

Как мне этого добиться? спасибо.

1 Ответ

1 голос
/ 05 мая 2011

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

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

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

...