Iphone iOS核心数据轻量级迁移
我遇到了核心数据轻量级迁移的问题。 模型的第一个版本的应用程序已提交到AppStore。 然后是版本2的数据模型(未提交)。 最后,在做了一些更改之后,我添加了模型的版本3,并将其提交到AppStore 随着迁移的逐步完成(v1-v2-v3),在测试设备上一切都运行良好 但它不适用于从AppStore更新应用程序的用户,例如它正试图从版本1迁移到版本3(跳过版本2) 我怎样才能解决这个问题?Iphone iOS核心数据轻量级迁移,iphone,ios,core-data,core-data-migration,Iphone,Ios,Core Data,Core Data Migration,我遇到了核心数据轻量级迁移的问题。 模型的第一个版本的应用程序已提交到AppStore。 然后是版本2的数据模型(未提交)。 最后,在做了一些更改之后,我添加了模型的版本3,并将其提交到AppStore 随着迁移的逐步完成(v1-v2-v3),在测试设备上一切都运行良好 但它不适用于从AppStore更新应用程序的用户,例如它正试图从版本1迁移到版本3(跳过版本2) 我怎样才能解决这个问题? 谢谢。这是一个暴力解决方案,但删除商店是解决问题的一个选项: // Setup CoreData wit
谢谢。这是一个暴力解决方案,但删除商店是解决问题的一个选项:
// Setup CoreData with MagicalRecord && remove CoreData store
// The flag is used to perform the delete just once
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"CORE_DATA_FLAG01"]) {
NSURL *storeURL =[NSPersistentStore MR_urlForStoreName:@"YourStore.sqlite"];
LOG(@"%@", storeURL);
NSFileManager *fm = [[NSFileManager alloc] init];
NSError *error = nil;
[fm removeItemAtURL:storeURL error:&error];
if (error) {
LOG(@"error %@", error);
} else {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"CORE_DATA_FLAG01"];
}
}
我用它与CoreData交互。在本例中,我使用该函数获取存储。对于轻量级迁移,如果V1->V2工作,V2->V3工作,那么直接从V1->V3开始应该不会有问题,除非你把事情弄糟了。:) 启动V1版本,然后切换到V3,逐步解决并调试问题
NSDictionary *options = @{
NSMigratePersistentStoresAutomaticallyOption: @YES,
NSInferMappingModelAutomaticallyOption: @YES
};
NSError *error;
NSPersistentStore *persistentStore = [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error];
if (!persistentStore) {
NSLog(@"migration failed: %@", error);
}
您是否使用subversion或git之类的系统控制版本?仅供参考,
LOG
是在调试模式下执行NSLog
的宏。