iOS 避免使用旧的核心数据模型

标签 ios core-data

我有一个使用核心数据的项目,每当我需要对模型进行小的更改时,我都会实现迁移。然而,在过去的一周里,我不得不对我的模型及其 react 方式进行彻底检查,因为我无法迁移任何数据。

有了这个,我想知道是否有一种方法可以检查我在设备中拥有的模型版本,也许可以通过代码将其删除并从头开始完全创建一个新模型。这可能不是最优选的方式,但如果有人有比我更好的解决方案,我愿意接受建议。

最佳答案

两个合理的选择:

  • 使用 NSManagedObjectModel 的常用版本控制机制。提高新模型的版本。在打开商店之前,Core Data 会自动检查给定商店是否与应用程序中的某一型号兼容;如果没有,当您尝试添加它时,它会给您一个错误。因此,如果您不在应用程序中提供旧模型,Core Data 将不会使用任何旧存储。您可以通过删除商店来响应该错误。您还可以在添加商店之前使用 -isConfiguration:completeWithStoreMetadata: 检查该商店。请参阅Initiating the Migration Process了解更多。

  • 对使用新模型创建的任何商店使用不同的名称。 iOS 应用程序仅使用一两个具有特定名称的商店的情况并不罕见。您可能知道在应用程序的早期版本中使用的商店名称;切换到不同的名称可以让您轻松了解商店是否与旧模型或新模型兼容。

关于iOS 避免使用旧的核心数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266801/

相关文章:

ios - NSXMLParser 不适用于某些标签

ios - 什么使元素可访问?为什么点击手势比 UIButton 更难访问?我如何解决它?

iOS 前缀文件 : Including NSManagedObjects (Core Data generated classes)

iOS 管理域模型和 NSManagedObject 模型

ios - 始终保存最后一个对象

iOS VoiceOver - 无法在 ARKit 中捕捉触摸

ios - 从底部看 Mapkit 自定义标注幻灯片 View

iOS 8 Swift - 保存多个实体的数据

ios - 在不丢失数据的情况下更改 Live App 的数据库

ios - 如何使用 CoreData 插入批量数据?