2

У меня есть UITableViewController, которым управляет NSFetchedResultsController. Из него пользователь может вызвать модальный ViewController, в котором он или она может вводить новые данные. Как это начинается, я создаю временный объект следующим образом:Как приостановить работу NSFetchedResultsController?

newPtr = [[Entry alloc] initWithEntity:[NSEntityDescription 
entityForName:@"Entry" inManagedObjectContext:self.nmocontext] 
insertIntoManagedObjectContext:self.nmocontext]; 

Когда пользователь делает выбор, атрибуты этого «временного» объекта, newPtr, устанавливаются.

Проблема в том, что базовый UITableViewController остается активным, пока виден модальный ViewController. Кажется, что это происходит из-за (вызывая сбои) в некоторых случаях, когда он реализует обязательный атрибут newPtr еще не установлен.

Что я могу сделать, чтобы остановить NSFetchedResultsController от просмотра моего объекта управляемого объекта до тех пор, пока модальный ViewController не будет уволен?

ответ

1

Я не проверял это сам, но возможный подход мог бы реализовать viewWillAppear и viewWillDisappear и установить делегат fetchedResultsController в self на появится и nil на исчезнет.

ИЛИ

Вы можете создать NSObject, который отражает атрибуты вашего NSManagedObject в окне редактирования. После того, как пользователь завершит редактирование атрибутов (и вы запустили соответствующие правила проверки), вы можете передать их обратно в экземпляр NSManagedObject и разрешить выполнять функцию fetchedResultsController.

+0

Спасибо! Очень интересная идея, что я думаю, будет работать. То, что я закончил делать (поскольку Stack Overflow сократилось на несколько часов), дает newPtr некоторые поддельные атрибуты для удовлетворения функции fetchedResultsController. Это работает ... – ed94133

0

Основные данные поддерживают «вложенные» контексты управляемых объектов, которые позволяют использовать гибкую архитектуру, которая упрощает поддержку независимых, аннулируемых наборов изменений. С помощью детского контекста вы можете разрешить пользователю создавать набор изменений для управляемых объектов, которые затем могут быть переданы родителям (и в конечном итоге сохранены в хранилище) в виде отдельной транзакции или отброшены. Если все части приложения просто извлекают один и тот же контекст, например, из делегата приложения, это затрудняет или невозможно поддерживать такое поведение.

 Смежные вопросы

  • Нет связанных вопросов^_^