Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot create an NSPersistentStoreCoordinator with a nil model

Been having my first crack at Core Data and I'm getting the following error when running my code on my device, but it works fine on the simulator..

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Cannot create an NSPersistentStoreCoordinator with a nil model'

Some of my methods that might be causing the problem:

    - (NSManagedObjectContext *)managedObjectContext {     if (__managedObjectContext != nil)     {         return __managedObjectContext;     }      NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];     if (coordinator != nil)     {         __managedObjectContext = [[NSManagedObjectContext alloc] init];         [__managedObjectContext setPersistentStoreCoordinator:coordinator];     }     return __managedObjectContext; }  /**  Returns the managed object model for the application.  If the model doesn't already exist, it is created from the application's model.  */ - (NSManagedObjectModel *)managedObjectModel {     if (__managedObjectModel != nil)     {         return __managedObjectModel;     }     NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"RugbyOnTv" withExtension:@"momd"];     __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];         return __managedObjectModel; }  /**  Returns the persistent store coordinator for the application.  If the coordinator doesn't already exist, it is created and the application's store added to it.  */ - (NSPersistentStoreCoordinator *)persistentStoreCoordinator {     if (__persistentStoreCoordinator != nil)     {         return __persistentStoreCoordinator;     }      NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"RugbyOnTV.sqlite"];      NSURL *storeUrl = [NSURL fileURLWithPath:storePath];      NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];         __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];      NSError *error = nil;     __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];       if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {          NSLog(@"Unresolved error %@, %@", error, [error userInfo]);         abort();     }          return __persistentStoreCoordinator; }       - (NSString *)applicationDocumentsDirectory {          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);         NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;         return basePath;     } 

EDIT

I copied and pasted the managedObjectContext method (below) from Apple's CoreDataBooks and it now works..Not really sure why though

- (NSManagedObjectModel *)managedObjectModel {     if (managedObjectModel != nil) {         return managedObjectModel;     }     managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];         return managedObjectModel; } 
like image 454
Dominic Williams Avatar asked Sep 09 '11 11:09

Dominic Williams


1 Answers

I had exactly the same error message as the original post. I was wrestling with this for hours. It was this line in my AppDelegate.m.

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"[same with name of xcdatamodeld]" withExtension:@"momd"]; 

For anyone out there searching this error message and finding this thread....try this first.

You must make sure that where it says [same with name of xcdatamodeld]....that it is!!! For some reason, mine had my project name in there and not the data model name.

Changed it and it worked straight away.....

Thanks to Rock & Muller for contributing.......you saved me days!!

Gaz.

like image 57
Gareth Lloyd Avatar answered Sep 24 '22 14:09

Gareth Lloyd