У меня должен быть NSFetchedResultsController в каждом представлении?

Я использую Базовые Данные в своем первом приложении для iPhone и пытаюсь понять NSFetchedResultsController. Это работает отлично в моем корневом представлении. Я должен инстанцировать экземпляра в каждых из моих контроллеров представления? Если так, есть ли шаблон, который делает это столь же легким, как это было в моем корневом контроллере (я просто установил флажок в шаблоне при создании проекта). Когда я добавляю единственный новый контроллер представления, я не вижу опции использовать Базовые Данные.

Обновление: Даже после того, как я действительно сокращал/вставлял код в свое второе представление, он взял меня некоторое время, чтобы понять, что я также должен был установить managedObjectContext прежде, чем переключиться на новое представление. Я добавил следующую строку к своему RootViewController прежде, чем продвинуть новое представление о стопке навигации:

self.newVC.managedObjectContext = self.managedObjectContext;
10
задан Jeremy Mullin 9 February 2010 в 01:14
поделиться

1 ответ

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

Однако, если другие (табличные) представления в вашей иерархии просто отображают различные атрибуты одной и той же сущности, эффективнее/проще просто передать существующий объект NSFetchedResultsController вниз по иерархии. Просто создайте член NSFetchedResultsController в интерфейсе класса и откройте его как свойство в .h-файле контроллера представления, а затем синтезируйте свойство и освободите его в .m-файле. Затем установите свойство перед тем, как поместить контроллер представления в стек.

11
ответ дан 3 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: