Базовые данные: выборка связанных объектов в отношениях «многие ко многим» - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь обернуть голову вокруг правильной архитектуры / шаблона для этой ситуации:

У меня есть две сущности, Book и Library с.У каждого из них есть отношение многие ко многим (Book с может быть во многих Library с, а у Library будет много Book с.

Один из моих взглядовперечисляет книги в определенной библиотеке. У меня есть класс контроллера, который обрабатывает выборку этих данных и предоставляет их моему представлению. Для этого я планирую использовать NSFetchRequest для всех Book сущностей, отфильтрованных по предикатукоторый выбирает только книги в определенном Library. Но я не могу найти правильный способ отформатировать предикат для этого запроса на выборку.

Я также исследовал простой доступ к Library booksсредство доступа для получения доступа к соответствующим книгам без необходимости что-либо извлекать (как описано здесь ), но я хочу использовать NSFetchedResultsControllerDelegate, чтобы мой контроллер уведомлялся о любых изменениях в извлеченных объектах и ​​мог уведомитьЯ просто подумал прослушать NSManagedObjectContextDidChangeObjectsNotification, но он будет доставлять уведомления о каждом изменении контекста, даже если это не относится к соответствующим объектам.

Как вы справились с ситуацией?что-то подобное в прошлом?

1 Ответ

0 голосов
/ 09 июня 2018

Ваш запрос / предикат получения может выглядеть примерно так:

let fetchRequest: NSFetchRequest<Book> = Book.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "%K CONTAINS %@", #keyPath(Book.libraries), library)

// Another option:
fetchRequest.predicate = NSPredicate(format: "SELF IN %@", library.books!)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...