【发布时间】:2012-10-06 01:26:54
【问题描述】:
小问题:
仅当我的核心数据模型发生更改(新实体、新属性等)时,我才想在我的应用程序中运行特定代码。如何确定模型是否已更改?
只是一些伪代码:
if (current_model_version != previous_model_version) {
//do some code
} else {
// do some other code
}
我猜我可能会使用 versionHashes 或 isConfiguration:compatibleWithStoreMetadata:,但我不确定如何。
为清晰起见进行了一些编辑:“当前”与“现在”相同,“以前”与“上次启动应用程序”相同。
【问题讨论】:
-
是的,我正在研究它。 isConfiguration:compatibleWithStoreMetadata: 为我解决了这个问题,但我需要一个实现示例来准确了解它的使用方式。
-
isConfiguration:compatibleWithStoreMetadata:不会告诉你有一个新版本 - 它只会告诉你有一个 incompatible 版本。如果您的新版本可以自动迁移,那么这将返回YES。 我对此只有 90% 的把握——你可能需要通过实验来证明我的正确/错误! -
你说得对。对我来说,第二部分是设置数据迁移。我正在开发的应用程序根据特定标准对设备上的歌曲进行分类,并将分类数据存储在核心数据中。之前开发它的开发人员只需清空数据库并在每次应用程序版本更改时重新分类所有歌曲,无论数据库是否更改。我正在设置它,这样我就不必在每次应用版本更改时对数据进行分类,并且迁移数据是自然的下一步。
标签: ios database core-data model version