我在iOS项目中使用Core数据。无论何时修改实体属性,我都有自动数据迁移的数据模型设置。但我最近做了一些实体关系的一些变化,现在我的应用程序崩溃:“无法找到源存储模型”Coredata手动移植
我意识到,重置应用程序,即删除和重新安装将解决这个问题,位I已经有一个实时版本,我的用户将失去他们所有的数据!
因此,现在我正在尝试手动迁移,但iOS文档不是很有帮助。举例来说,我有这样的代码,我创建一个模型映射后运行:
NSURL *destinationStoreURL = [NSURL fileURLWithPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @"import.sqlite"]];
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"db.sqlite"]];
//initialize migration manager
NSMigrationManager *migrationManager = [[NSMigrationManager alloc] initWithSourceModel:[[self persistentStoreCoordinator] managedObjectModel]
destinationModel:[[self persistentStoreCoordinator] managedObjectModel]];
//perform migration
NSError *error = nil;
NSMappingModel *mappingModel = [NSMappingModel inferredMappingModelForSourceModel:[[self persistentStoreCoordinator] managedObjectModel]
destinationModel:[[self persistentStoreCoordinator] managedObjectModel] error:&error];
if (mappingModel == nil) {
NSLog(@"No Mapping model error %@, %@", error, [error userInfo]);
}
[migrationManager migrateStoreFromURL:sourceStoreURL
type:NSSQLiteStoreType
options:nil
withMappingModel:mappingModel
toDestinationURL:destinationStoreURL
destinationType:NSSQLiteStoreType
destinationOptions:nil
error:&error];
运行这段代码的工作和重置数据库,但我不能找到我的旧数据,当我保存任何新的数据,我得到没有持久存储的错误!
有没有人有任何想法?
夸,我也同样的问题,但我解决不了。这篇文章正是我发生的事情。 – Xeieshan 2014-03-06 06:37:05