Terminar la aplicación debido a la exception no detectada 'NSInvalidArgumentException', motivo: '+ entityForName: nil no es un NSManagedObjectContext legal

Obtengo un resultado nulo para

AppDelegate.h

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; 

AppDelegate.m

  @synthesize managedObjectContext = __managedObjectContext; @synthesize managedObjectModel = __managedObjectModel; @synthesize persistentStoreCoordinator = __persistentStoreCoordinator; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { Person *newPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext]; ....... } 

Tengo un file xcdatamodeld con una entidad de Person y un atributo de nombre. Hice un file Person.h y .m de un NSManagedObject.

¿Por qué obtengo un resultado nulo para mi salida?

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Person'' 

En su file de implementación viewController.m, justo debajo de este bit de código:

 - (void)viewDidLoad { 

agregue este bit de código:

 id delegate = [[UIApplication shanetworkingApplication] delegate]; self.managedObjectContext = [delegate managedObjectContext]; 

Me di count de que, dado que no estaba agregando Core Data cuando creé originalmente el proyecto, me faltaba un código que se genera automáticamente cuando la opción de datos básicos está marcada. Por lo tanto, cuando seguí algunos tutoriales en línea, se asume este código generado automáticamente. Ahí es donde estropeé.

Asegúrese de que el código que se ejecuta cuando se levanta la exception se ejecuta en el mismo subprocess en el que creó el context del object administrado.

Si está utilizando una plantilla de proyecto que utiliza NSPersistentContainer, asegúrese de ejecutar esto en iOS 10+ o fallará silenciosamente con la initialization y el locking cuando realice algún tipo de operación Core Data.