首先,我不是百分之百地关注核心数据,但我尽我所能。因此,我在应用程序更新时实施了轻量级迁移,但最近失败了,即应用程序在尝试访问本地数据库后崩溃。我目前认为原因是因为模型版本有些混淆,但即使不是这样,我认为我的问题仍然有效:
在更新/升级应用时,有没有办法忽略核心数据迁移过程并强制应用使用最新的模型版本,即使它删除了本地用户数据?
我的计划是,如果迁移失败,请将最新版本强制到设备上。这是一个比崩溃的应用程序更好的解决方案
答案 0 :(得分:2)
迁移发生在addPersistentStoreWithType
来电期间。所以,如果失败了
并且您想要从一个新的空数据库开始,只需删除持久性存储
文件并再次致电addPersistentStoreWithType
:
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:NULL];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
// Handle fatal error
}
}
这在开发期间也很有用,因为您不必删除该应用 每次更换模型时。