Почему происходит сбой инициализации Core Data, когда я пытаюсь сделать это в этих точках?
Я вижу, как решить проблему, но меня беспокоит, что я нене понимаю, почему это не такт работа. У меня есть подкласс UIViewController, который использует Core Data, поэтому ему нужен NSManagedObjectContext. Контроллер загружается из файла пера, где онs размещены под контроллером навигации, который находится внутри контроллера вкладок.
Я пытался сделать это в initWithCoder и viewDidLoad и по какой-то причине это нет работа:
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = [[appDelegate managedObjectContext] retain];
По какой-то причине managedObjectContext возвращает nil, и я получаю это при попытке позже создать управляемый объект:
*** Завершение приложения из-за неисследованного исключения »NSInternalInconsistencyException»Причина:+ entityForName: не удалось найти объект с именем 'LogRecord» в этой модели.
Что вы получаете, когда ваш контекст равен нулю или модель можетне может быть загружен (или действительно отсутствует сущность).
Если я делаю то же самое в верхней части моего метода saveLogEntry (который создает управляемые объекты и сохраняет контекст), то он работает просто отлично.
Если я делаю то, что делает пример приложения Recipes:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
loggingViewController.managedObjectContext = self.managedObjectContext;
// Standard stuff
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
}
(loggingViewController - это IBOutlet в делегате приложения).
Кто-нибудь знает, что конкретно может происходить здесь? Похоже, что это не удастся, если сделано "слишком рано" но особенно с viewDidLoad I 'Я ожидаю, что это сработает, так как я думаю, что это происходит после вызова addSubview.