2013-03-14 3 views
3

У меня есть сущность с именем «Жанр», которая имеет атрибуты genreID и parentGenreID. Я хочу сделать динамический атрибут, который дает мне счет объектов Genre, где parentGenreID равен genreID строки, так что мне не нужно запрашивать количество для каждой возвращаемой строки.Как выполнить подзапрос в качестве атрибута с использованием Core Data?

Если бы я делал это в SQL, я хотел бы использовать запрос:

SELECT g.title, (SELECT COUNT(*) FROM genres sg WHERE sg.parentGenreID = g.genreID) as subgenres FROM genres g

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

Моя догадка что-то вроде:

SUBQUERY(Genre, $genre, $genre.parentGenreID = $FETCH_SOURCE.genreID)[email protected]

Что бы правильный способ сделать это в Core Data?

ответ

-1

Используя NSPredicate, вы можете положить условие, где parentGenreID=genreID. Вместо того, чтобы использовать executeFetchRequest, используйте countForFetchRequest, чтобы получить счет и снова использовать NSPredicate subgenres IN с executeFetchRequest, который возвращает запись, содержащую заголовок, как вы ожидали.

+0

Вы предлагаете использовать два предиката или каким-то образом добавив обе части к одному предикату? Можете ли вы предоставить пример кода? Я пытаюсь избежать выполнения дополнительных запросов на выборку «n». – Gujamin

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