从 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 以获取请求?
核心数据迁移问题:“持久存储迁移失败,缺少源托管对象模型。”