我有一个使用核心数据的项目,每当我需要对模型进行一些小改动时,我都会实施迁移。然而,在过去的一周里,我不得不彻底检查我的模型及其反应的方式,我无法迁移任何数据。
有了这个,我想知道是否有办法检查我在设备中的模型版本,也许通过代码删除它并从头开始创建一个新版本。这可能不是最优选的方式,但如果有人有任何更好的解决方案,我会接受建议。
答案 0 :(得分:4)
两个合理的选择:
使用NSManagedObjectModel的常用版本控制机制。打破新模型的版本。核心数据将在打开商店之前自动检查给定商店是否与应用程序中的某个模型兼容;如果没有,当你尝试添加它时它会给你一个错误。因此,如果您未在应用中提供旧模型,Core Data将不会使用任何旧商店。您可以通过删除商店来回复错误。您还可以在使用-isConfiguration:compatibleWithStoreMetadata:
添加商店之前检查商店。有关详情,请参阅Initiating the Migration Process。
对使用新模型创建的任何商店使用其他名称。 iOS应用程序仅使用一个或两个具有特定名称的商店并不罕见。您可能知道在以前版本的应用中用于商店的名称;切换到不同的名称可以让您轻松了解商店是否与旧模型或新模型兼容。
答案 1 :(得分:0)
如果您更改了属性以便新模型中不存在某些旧属性,请尝试使用respondsToSelctor:方法检查实体是否响应旧选择器。如果是的话,你就拥有旧款。