CoreData错误:+ entityForName:无法找到实体名称的NSManagedObjectModel

mar*_*014 9 xcode core-data objective-c

我已经挣扎CoreData了几天,但我一直收到这个错误:

'NSInternalInconsistencyException',原因:'+ entityForName:无法找到实体名称的NSManagedObjectModel.

我检查了实体名称和我在代码上写的内容,它们是相同的.我还重新创建了对象数据模型,甚至从模拟器中删除了应用程序,但似乎没有任何修复它.这就是我所拥有的:

保存到CoreData的方法:

-(IBAction)save:(id)sender {
    NSManagedObject * newNews = [NSEntityDescription insertNewObjectForEntityForName:@"NewsStand"
    inManagedObjectContext:coredata.managedObjectContext];
    [newNews setValue:news_title forKey:@"story_title"];
    [newNews setValue:news_desc forKey:@"story_desc"];
    [newNews setValue:news_image  forKey:@"story_image"];
    [newNews setValue:test  forKey:@"story_url"];
    [coredata commit];
    NSLog(@"data saved!!!!");
}
Run Code Online (Sandbox Code Playgroud)

我已经在一个单独的类中实现了核心数据的所有方法:

applicationDocumentsDirectory,  
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator, 
- (NSManagedObjectModel *)managedObjectModel, 
- (NSManagedObjectContext *)managedObjectContext
Run Code Online (Sandbox Code Playgroud)

Tec*_*Zen 26

这是一个相当常见的错误,它有三个原因:

  1. 拼错实体名称,例如NewsStand代替NewsStands.
  2. 拥有一个nil托管对象上下文
  3. 没有加载或错误的托管对象模型.

(1)是最常见的但(3)比(2)更常见.您可以使用keypath检查是否正在加载正确的模型:

aManagedObjectContext.persistentStoreCoordinator.managedObjectModel.entities
Run Code Online (Sandbox Code Playgroud)

然后检查实体的名称.