Почему происходит сбой инициализации 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.

Ответы на вопрос(1)

Ваш ответ на вопрос