Обход отношений один-ко-многим с NSFetchedResultsControllers - PullRequest
0 голосов
/ 07 июня 2011

Я создаю приложение, которое перемещается по нескольким уровням отношений один-ко-многим.Например, представьте, что образец кода CoreDataBooks начинается со списка жанров, вы щелкаете по жанру, а , а затем получаете список книг, упорядоченный по авторам, как видно из примера кода Apple..

Вот моя проблема: документация Apple говорит мне, что я должен использовать FetchedResultsController, чтобы помочь организовать мой список книг по разделам (среди прочих причин).Но при попытке выяснить, как перейти от "одного" жанра к моим "многим" книгам, в FAQ по основным данным говорится не использовать выборку.Из часто задаваемых вопросов:

У меня есть отношение ко-многим от объекта A к объекту B. Как получить экземпляры объекта B, связанные с данным экземпляром объекта A?

Вы не делаете.Более конкретно, нет необходимости явно извлекать целевые экземпляры, вы просто вызываете соответствующий метод кодирования значения ключа или метод доступа к экземпляру Entity A.

Проблема, конечно, в том, что ятеперь мои книги в наборе, но я хочу, чтобы они брали их из контролера полученных результатов.

Каков наилучший способ продолжить?Должен ли я следовать часто задаваемым вопросам и, если да, как мне разделить мои книги по авторам?

Или я использую извлеченный контроллер результатов (который, я подозреваю, лучше), и в этом случае, как мне пройти отношение «один ко многим» (так как очень полезный ответ Apple - просто «не надо»t ")?

Большое спасибо за помощь.

Саша

1 Ответ

1 голос
/ 07 июня 2011

У вас есть модель данных, которая выглядит примерно так:

Genre{
  name:
  books<-->>Book.genre
}

Book{
  name:
  genre<<-->Genre.books
}

В вашей главной таблице вы запускаете контроллер выбранных результатов, чтобы получить таблицу из Genre объектов.Затем пользователь выбирает одну из строк, которая за кадром выбирает конкретный объект Genre.

Поскольку каждый объект Genre имеет отношение books, которое указывает на связанные объекты Book, вы автоматически получаете ссылку на все связанные объекты книги, поэтому вам не нужно ничего извлекать.Для просмотра таблицы вашей книги вы просто создаете отсортированный массив объектов Book в выбранном Genre объектном отношении books.

Представьте, что граф объектов Core Data представляет собой скопление цепочек из бисера, сплетенных вместе в сеть или ткань.Бусы - это объекты, а струны - это отношения.Извлечение извлекает один из шариков / объектов из комка, но как только у вас есть этот шарик / объект в руке, вы можете просто потянуть за его строку / связь, чтобы вытащить все шарики / объекты, связанные с шариком в вашей руке.

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

Вот почему в документах Apple говорится, что вам не нужна вторая выборка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...