如何在“源”中更改模型当前版本的 xcdatamodeld

Posted

技术标签:

【中文标题】如何在“源”中更改模型当前版本的 xcdatamodeld【英文标题】:How to change model current Version of xcdatamodeld in "Source" 【发布时间】:2014-02-28 04:12:13 【问题描述】:

我正在开发使用 coredata 的 ios 应用程序。

我知道如何在“XCode”中更改模型当前版本的 xcdatamodeld。但是我可以在程序中更改它吗?

如果可以,请教我。

【问题讨论】:

不,你不能从代码中改变你的模型版本,但你可以create your model programatically。 感谢您的回答。我会检查网址。 【参考方案1】:

不,您不能更改当前版本。但你也不需要。

    您可以按照@Adam 的建议以编程方式创建模型。 您可以通过NSManagedObjectModel 上的-initWithContentsOfURL: 方法选择您希望使用的模型。

加载当前版本只是为了方便迁移,不是必需的。

更新

谢谢你的回答。我有一个问题。如果我想在某些情况下选择当前版本,请复制原始 xcdatamodeld 文件并将两个 xcdatamodeld 文件放入项目中,原始 xcdatamodeld 设置为当前版本,复制的 xcdatamodeld 设置为另一个版本,我通过 initWithContentsOfURL 方法选择了这些文件。这种方式可行吗?

这是可能的,但没有必要。当您将-initWithContentsOfURL 指向您的momd 时,它将自动选择模型的最新版本。如果将其指向mom 文件,它将加载单个模型。由于mom 文件位于momd 目录中,因此您可以只保留一个版本化模型,然后加载您想要的该模型的任何版本。当我手动进行所有迁移时,我经常这样做。

mom 是已编译的xcdatamodel 文件。 momd 是编译模型的目录,是编译 xcdatamodeld 包(又名文件夹)的结果。

【讨论】:

感谢您的回答。我有一个问题。如果我想在某些情况下选择当前版本,请复制原始 xcdatamodeld 文件并将两个 xcdatamodeld 文件放入项目中,原始 xcdatamodeld 设置为当前版本,复制的 xcdatamodeld 设置为另一个版本,我通过 initWithContentsOfURL 方法选择了这些文件。这种方式可行吗? 感谢您的补充。这个答案对我很有帮助。

以上是关于如何在“源”中更改模型当前版本的 xcdatamodeld的主要内容,如果未能解决你的问题,请参考以下文章

核心数据“找不到源存储模型”;

通过 WPF 视图模型更改源在框架中导航

如何将 2 个属性从我的 App Store 版本交换到我当前的开发版本?

Docker指定安装版本Ubuntu、启动以及更改源

在没有打开版本控制的情况下更改了核心数据模型

如何从 iOS 静态库中访问 Bundle