Основные данные для многих NSP Предикат с И - PullRequest
3 голосов
/ 26 февраля 2010

Я пытаюсь написать запрос для строки поиска типа как вы. Я хочу сделать запрос «Kind» и вернуть все виды, для которых есть LocalName с ('name' LIKE% @ AND localeIdentifier ==% @).

Если я только ищу имена (игнорируя localeIdentifier), я мог бы сделать что-то вроде этого:

ANY localized.name LIKE %@

То, что я хочу, это что-то вроде

ANY localized.(name LIKE %@ AND localeIdentifier == %@)

Подводя итог, при поиске "Kind" любой один элемент в отношении to-many "localized" должен соответствовать как name, так и localeIdentifier.

Есть идеи для правильного синтаксиса этого?

1 Ответ

9 голосов
/ 27 февраля 2010

То, что вы хотите, это подзапрос . Синтаксис в формате предиката:

SUBQUERY(self.localized, $x, $x.name LIKE %@ AND $x.localeIdentifier == %@).@count > 0

, где выражение SUBQUERY возвращает коллекцию экземпляров в коллекции self.localized, которые соответствуют предикату в третьем аргументе. Kind экземпляров, для которых это выражение SUBQUERY не пустое (т. Е. @count > 0) соответствует требуемым критериям.

Выражение SUBQUERY было введено в OS X 10.5.

...