Подтвердить что ты не робот

Основные данные: может ли NSFetchedResultsController извлекать два разных объекта?

Я работаю над iPhone-приложением, и в определенном представлении мне нужно загрузить два разных объекта: один, который заполнит UITableView, а другой, который заполнит UITextView.

Можно ли получить оба свойства с помощью одного NSFetchedResultsController?

Или мне нужно использовать два разных NSFetchedResultsController s?

Любые идеи о том, как наилучшим образом подойти к этой проблеме?

4b9b3361

Ответ 1

Каждый запрос на выборку имеет только одну сущность, и каждый выбранный контроллер результатов имеет только одну выборку. Поэтому вам нужны отдельные контроллеры для каждого объекта.

Если вы думаете об этом, как бы вы сделали предикат для извлечения двух логически отдельных объектов?

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

Ответ 2

Как заявил TechZen, ответ отрицательный.

Однако вы можете контролировать сохранение NSManagedObjectContext самостоятельно и реагировать на эти сбережения. Если вам действительно нужно смотреть более одного объекта (что гораздо более распространено на iPad, чем iPhone), добавьте наблюдателя NSNotification в NSManagedObjectContextDidSaveNotification и посмотрите на -userInfo NSNotification, который возвращается. Затем вы можете запустить предикаты по результатам, чтобы определить, нужно ли обновлять ваш дисплей. Это то, что делает NSFetchedResultsController под обложками.

Ответ 3

The quick answer is NO. But I found a creative answer.

В вашем TableViewController создайте строку поиска с количеством областей, которые у вас есть.

Когда выбрана различная область, вы можете извлекать разные объекты!

Это работает, потому что я сделал такое приложение!

Пользователям было бы легче разделить два разных данных!

Ответ 4

Лучшим решением было бы реорганизовать вашу модель и посмотреть, есть ли у вас 2 объекта что-то общее. Вы можете сделать абстрактную сущность для пересекающихся вещей, а затем наследовать ваши 2 сущности из этого. Выполните выборку на абстрактном объекте, и ваш контроллер результатов выборки должен возвращать смешанные результаты.