¿Por qué falla la inicialización de Core Data cuando intento hacerlo en estos puntos?

Veo cómo resolver el problema, pero me molesta que no entiendo por qué esto no funciona. Tengo una subclase de UIViewController que utiliza datos básicos, por lo que necesita el NSManagedObjectContext. El controlador se carga desde un archivo de plumilla donde se coloca debajo de un controlador de navegación que se encuentra dentro de un controlador de pestañas.

Intenté hacer esto en initWithCoder y viewDidLoad y por alguna razón no funciona:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = [[appDelegate managedObjectContext] retain];

Por alguna razón, managedObjectContext devuelve nil y obtengo esto cuando intento crear un objeto administrado más tarde:

*** Aplicación de terminación debido a la excepción no detectada 'NSInternalInconsistencyException', motivo: '+ entityForName: no se pudo encontrar una entidad denominada' LogRecord 'en este modelo'.

Que es lo que obtienes cuando tu contexto es nulo o el modelo no se puede cargar (o realmente carece de la entidad).

Si hago exactamente lo mismo en la parte superior de mi método saveLogEntry (que crea objetos gestionados y guarda el contexto), entonces funciona bien.

Si hago lo que hace la aplicación de ejemplo Recetas:

- (void)applicationDidFinishLaunching:(UIApplication *)application {

    loggingViewController.managedObjectContext = self.managedObjectContext;

    // Standard stuff
    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];
}

(loggingViewController es un IBOutlet en el delegado de la aplicación).

¿Alguien sabe lo que específicamente podría estar pasando aquí? Parece que falla si se hace "demasiado pronto", pero especialmente con viewDidLoad, espero que funcione, ya que creo que ocurre después de que se llama addSubview.

Respuestas a la pregunta(1)

Su respuesta a la pregunta