我有一个使用核心数据的项目,每当我需要对模型进行小的更改时,我都会实现迁移。然而,在过去的一周里,我不得不对我的模型及其 react 方式进行彻底检查,因为我无法迁移任何数据。
有了这个,我想知道是否有一种方法可以检查我在设备中拥有的模型版本,也许可以通过代码将其删除并从头开始完全创建一个新模型。这可能不是最优选的方式,但如果有人有比我更好的解决方案,我愿意接受建议。
最佳答案
两个合理的选择:
使用 NSManagedObjectModel 的常用版本控制机制。提高新模型的版本。在打开商店之前,Core Data 会自动检查给定商店是否与应用程序中的某一型号兼容;如果没有,当您尝试添加它时,它会给您一个错误。因此,如果您不在应用程序中提供旧模型,Core Data 将不会使用任何旧存储。您可以通过删除商店来响应该错误。您还可以在添加商店之前使用
-isConfiguration:completeWithStoreMetadata:
检查该商店。请参阅Initiating the Migration Process了解更多。对使用新模型创建的任何商店使用不同的名称。 iOS 应用程序仅使用一两个具有特定名称的商店的情况并不罕见。您可能知道在应用程序的早期版本中使用的商店名称;切换到不同的名称可以让您轻松了解商店是否与旧模型或新模型兼容。
关于iOS 避免使用旧的核心数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266801/