2013-04-29 3 views
0

Я хочу получить объединение данных из разных объектов. У меня есть несколько объектов (разные типы тегов, например, местоположение, события и т. Д.), И мне нужны данные для табличного представления, которое показывает «Все теги» (т. Е. Объединение всех объектов тега). Как сделать запрос на выборку с помощью Core Data для такого варианта использования?Core Data Union Query Equivalent

Я знаю, что Core Data не является ORM, но если мое объяснение выше не было достаточно хорошим, я объясню соответствующий случай использования базы данных. У меня разные таблицы, например. события, местоположения, люди и т. д., и я хотел бы СОЕДИНИТЬ результаты из этих разных таблиц. Помните, что UNION объединяет строки, а не столбцы.

Одним из очевидных решений является получение данных из разных объектов отдельно, а затем просто объединение данных NSMutableArrays. Мне интересно, есть ли более эффективный способ.

ответ

0

Там нет никакого способа, чтобы принести больше одного типа сущности в запросе выборки ...

UNLESS, субъекты вы хотели «Союз» имеют один и тот же базовый класс в модели (кроме NSManagedObject).

Так что, если все ваши объекты должны были наследоваться от базового класса с именем Tag, например, вы могли бы собрать все из них вместе.

Это, однако, создаст единую таблицу для всех этих объектов (очень редкая таблица, если пересечение между классами невелико) в фактическом файле базы данных.

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

Другое решение будет (как вам было предложено) создать запрос на выборку для каждого объекта.