是否有可能“强迫”应用程序接受新的模型版本,即使它意味着覆盖现有版本?

时间:2013-11-11 06:42:58

标签: ios core-data

首先,我不是百分之百地关注核心数据,但我尽我所能。因此,我在应用程序更新时实施了轻量级迁移,但最近失败了,即应用程序在尝试访问本地数据库后崩溃。我目前认为原因是因为模型版本有些混淆,但即使不是这样,我认为我的问题仍然有效:

在更新/升级应用时,有没有办法忽略核心数据迁移过程并强制应用使用最新的模型版本,即使它删除了本地用户数据?

我的计划是,如果迁移失败,请将最新版本强制到设备上。这是一个比崩溃的应用程序更好的解决方案

1 个答案:

答案 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
    }
}

这在开发期间也很有用,因为您不必删除该应用 每次更换模型时。