从 Git 中检索核心数据托管对象模型

Posted

技术标签:

【中文标题】从 Git 中检索核心数据托管对象模型【英文标题】:Retrieving Core Data Managed Object Model from Git 【发布时间】:2013-02-20 19:43:23 【问题描述】:

我目前在 App Store 中有一个使用 Core Data 的应用的 v1.1。

我正在对 Core Data 架构进行简单更改,为即将发布的版本添加一些属性到现有实体。由于我的幼稚,我从发布版本开始对现有的 Core Data 托管对象模型进行了上述更改。

在阅读 this 轻量级迁移指南时,我遇到了这个问题:

因此,绝对不能对已发布版本的应用程序的托管对象模型进行更改。也就是说,如果您的应用已经在 App Store 中,请不要更改该版本的托管对象模型中的任何内容。

这显然让我很担心,因为这是我在开发即将发布的版本时一直在做的事情。我一直在使用 Git,并且一直致力于。 从这些 Git 修订中恢复未触及的托管对象模型最不痛苦的方法是什么(假设 Git 中的某些修订确实包含它)。

更新/编辑 - 迁移当前用户的核心数据存储对我来说并不重要,因为大部分数据都可以重新下载,而且我正在使用核心数据来创造更流畅的体验。 仅使用当前修改的 Core Data 托管对象模型会导致任何问题/崩溃吗?

【问题讨论】:

【参考方案1】:

我只想从 Git 中签出包含您发布的模型的修订版。然后将该模型复制到您当前的修订版中。届时,您可以创建一个新的模型版本并尽情享受。

如果您不想搞砸所有这些,您可以创建一个全新的模型并定义您的应用以使用该新模型,这将需要您将所有内容重新下载到该新模型和一个新的持久存储中.如果你走这条路,我还会编写一些代码来从他们的设备中删除旧模型和持久存储文件。

不过我觉得第一条路线应该不会太麻烦。

【讨论】:

【参考方案2】:

您需要浏览您的提交历史记录,git log 是一种方法,并找到您想要回滚到的点。记下您想要的提交的提交哈希。

git checkout commit-hash path/to/file

请参阅this SO answer 了解完整说明。

【讨论】:

以上是关于从 Git 中检索核心数据托管对象模型的主要内容,如果未能解决你的问题,请参考以下文章

在托管对象上下文中添加 NSSortDescriptor 以获取请求?

核心数据迁移问题:“持久存储迁移失败,缺少源托管对象模型。”

核心数据 - 2 个对象模型,1 或 2 个托管对象上下文 - 哪个更好?

核心数据:创建多个托管对象,但只保存一些?

检索所有 NSTreeController 的对象

继承托管对象