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

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

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

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

迁移发生在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 } } 

这在开发过程中也很有用,因为每次更改模型时都不必删除应用程序。