Я пишу тестовую программу, в которой используется контроллер вкладок с несколькими представлениями вкладок.Программа загружает несколько файлов XML, анализирует и заполняет таблицы sqlite через Core Data.Переменные и функции Core Data находятся в файле делегата приложения после кода, созданного XCode.
Я начал с простой передачи переменной managedObjectContext каждому нужному подпредставлению, как я его инициализировал в делегате приложения, например:
FirstViewController *vc1;
vc1 = [[[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil] autorelease];
[vc1 setManagedObjectContext:self.managedObjectContext];
Однако у меня есть функция (resetData), которая удаляет все хранилище данных - удаляет файлы постоянного хранилища и устанавливает все переменные базовых данных (managedObjectContext, managedObjectModel, persistentStore и т. Д.) Равными nil,переинициализировать все.Это сделано для того, чтобы программа могла запускаться с нуля и перезагружать все данные из сети.Когда это происходит, подпредставления теперь указывают на старый managedObjectContext.
Каков наилучший способ обновить переменную managedObjectContext во всех подпредставлениях?Вручную обновить переменные managedObjectContext подпредставлений из функции resetData?Использовать NSNotificationCenter для отправки уведомления всем просмотрам?Полностью удаляет и повторно инициализирует все постоянные файлы хранилища?
В настоящее время я установил этот метод получения, который просто ссылается на делегат приложения во всех классах, которые должны ссылаться на MOC:
- (NSManagedObjectContext *)managedObjectContext {
MyAppDelegate* ad = (MyAppAppDelegate*)[[UIApplication sharedApplication] delegate];
return [ad managedObjectContext];
}
Я очень новичок в дизайне какао / iOS и пытаюсь найти наиболее правильный способ сделать это!То, что у меня сейчас работает, но мне интересно, есть ли невидимые подводные камни или будущие проблемы?Спасибо!