核心数据迁移:“无法合并具有两个不同实体的模型……”

问题描述

|| 我向核心数据模型添加了新版本。我将新属性添加到一个实体(
Seriese
) 但它引发例外
 *** Terminating app due to uncaught exception \'NSInvalidArgumentException\',reason: \'Can\'t merge models with two different entities named \'Seriese\'\' 
我使用以下代码:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }

    NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationPrivateDocumentsDirectory] stringByAppendingPathComponent: @\"CoreDataTutorialPart4.sqlite\"]];

    NSError *error = nil;
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:  
                                            [NSNumber numberWithBool:YES],NSMigratePersistentStoresAutomaticallyOption,[NSNumber numberWithBool:YES],NSInferMappingModelAutomaticallyOption,nil];


    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {

        NSLog(@\"Unresolved error %@,%@\",error,[error userInfo]);
        abort();
    }    

    return persistentStoreCoordinator;
}
有解决此错误的建议吗?我不想丢失保存的数据     

解决方法

问题很可能来自如何加载托管对象模型。默认方法是合并捆绑软件中的模型,但是在这种情况下,实际上您有两个具有相同实体(v1和v2)的模型...在此进行了很好的说明。...迁移问题     ,Core Data无法理解这两个模型中的实体ѭ0都是相同的实体,因此应将旧ѭ0的属性转换为新ѭ0。相反,它认为新的“ 0”应被视为一个全新的实体。 这通常是由于尝试对自动迁移无法处理的新版本进行更改而引起的。自动迁移可以处理对属性名称的更改,添加属性或其他更改,这些更改不会影响单个实体之外的任何事物。一旦开始更改关系和/或添加新实体,就必须进行手动迁移。 你可以打电话
+[NSMappingModel inferredMappingModelForSourceModel:destinationModel:error:] 
...测试是否可以进行自动迁移。如果返回nil和/或and错误,则不能。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...