2013-10-10 3 views
0

Я новичок в данных Core, и у меня есть некоторые проблемы с моим поиском.поиск основных данных по многим отношениям

Моя структура данных выглядит следующим образом:

Server --one-to-many--> Category --many-to-many--> Cube 

Моя идея заключается в том, чтобы получить объект сервера, захватить server.category набор и сделать его кубиками.

Теперь мне нужно искать в этой модели. Я хотел бы найти имя куба и получить:

Объект сервера whit категории, которые содержат куб с этим именем (или это имя содержит это слово).

Я пытался так:

NSPredicate * defaultPredicate = [NSPredicate predicateWithFormat:@"ANY SELF.defaultFlag = %@ AND ANY SELF.category.cube.title = %@", [NSNumber numberWithInt:1], text]; 

но получить мне

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'multiple to-many keys not allowed here' 

Как сделать это правильно.

EDIT:

Если у меня есть, например: Один сервер DemoServer йота 3 Категория (Категория1, category2, Category3) и те категории имеет каждый 3 кубика (Test, cube11, cube12), (cube21, cube22, cube23), (Test, Cube32, тест)

и я ищу: Test (название куба) Я хотел бы получить

DemoServer ничуть 2 Категории (category1, Category3), и те будут иметь кубы (тест) , (Испытание, испытание)

ответ

0

Предикаты с вложенными ко многим отношениями немного сложны. «очевидный» предикат

[NSPredicate predicateWithFormat:@"ANY category.cube.title = %@", text] 

не работает, если оба «категория» и «куб» является ко-многим.

Что вам нужно, это подзапрос:

[NSPredicate predicateWithFormat:@"SUBQUERY(category, $cat, ANY $cat.cube.title = %@)[email protected] > 0", text] 

В сочетании с другой предиката:

[NSPredicate predicateWithFormat:@"defaultFlag = %@ AND SUBQUERY(category, $cat, ANY $cat.cube.title = %@)[email protected] > 0", 
     [NSNumber numberWithInt:1], text] 
+0

спасибо: D, может быть, глупый вопрос, но что $ кот –

+0

@MarkoZadravec: Это как местный переменной SUBQUERY. '$ cat' устанавливается в каждый из связанных элементов категории по очереди. (К сожалению, SUBQUERY почти недокументирован, поэтому вопрос не является глупым вообще :-) –

+0

Спасибо, но еще две проблемы. Теперь он не разбивается, но не обнаруживает никаких строк, вторая проблема заключается в том, что это не работает, а ANY SELF.defaultFlag =% @ И перед SUBQUERY –

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