【发布时间】:2010-09-17 14:16:44
【问题描述】:
我在一个 iOS 项目中使用 Core 数据。每当我修改实体属性时,我都会设置用于自动数据迁移的数据模型。但我最近对一些实体关系进行了一些更改,现在我的应用程序崩溃了:“找不到源商店的模型”
我意识到重置应用程序,即删除并重新安装将解决这个问题,我已经有一个实时版本,我的用户将丢失所有数据!
所以现在我正在尝试手动迁移,但 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];
运行此代码可以工作并重置数据库,但我找不到旧数据,当我保存任何新数据时,我收到一个错误,即没有持久存储!
有人有什么想法吗?
【问题讨论】:
-
Kwame ,我有同样的问题,但我无法解决。这篇文章正是发生在我身上的事情。
标签: iphone cocoa-touch core-data ios4 migration