核心数据版本控制,总是加载以前的版本

Posted

技术标签:

【中文标题】核心数据版本控制,总是加载以前的版本【英文标题】:Core Data Versioning, always loading the previous version 【发布时间】:2014-10-03 06:16:19 【问题描述】:

我在我的项目中完成了轻量级版本控制,现在我有两个版本,当前版本设置为最新版本(例如 dataModel 2.xcdatamodel)。我已经按照苹果文档中的每个步骤进行操作。但是每次都崩溃,因为新安装后加载旧版本(调试后发现实体中缺少新属性)。

如果我切换回旧版本并再次回滚到当前版本,那么它运行良好。我已经删除了引用并重新添加了它,但结果是一样的。

我的源代码在 git 上,每次都付出额外的努力非常烦人。请帮我解决这个问题。

谢谢:)

【问题讨论】:

我正在使用版本控制,它工作正常。但不知道你在问什么,你有使用旧版本的应用程序,更新后它仍然崩溃?您能否进一步澄清问题。 感谢 Krzysztof!!!我的应用程序已经在 appstore 上,我正在努力更新。我将当前版本设置为正确的版本,但每次都会加载以前的模型,除非我回到旧版本并再次回到最新版本。 你是什么意思它会加载以前的版本,直到你回到旧版本,你有 3 个版本吗?如果你有v1在商店,做v2,把所有的变化都放在v2中,然后启动应用程序,它不起作用吗? 不,我有两个版本 - dataModel.xcdatamodel 和 dataModel 2.xcdatamodel,其中当前版本设置为 dataModel 2.xcdatamodel。自从旧实体正在加载以来,我每次都会崩溃。但如果我回到旧版本 dataModel.xcdatamodel 并再次回滚到版本 dataModel 2.xcdatamodel 那么它很好。 【参考方案1】:

如果您 100% 确定新版本已加载,则意味着您创建了新版本,启动了应用程序,将更改应用于模型,再次启动了应用程序。为了消除它的可能性,只需在第二个版本的基础上创建第三个版本并使其当前处于活动状态。还要确保您按照苹果手册在此处实施了自动轻量级迁移

https://developer.apple.com/Library/ios/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.html

【讨论】:

【参考方案2】:

我不确定,我猜这是一个 git/svn 问题。从项目一开始,我们就不得不使用不同版本的 Xcode。每当我们提交到 git 时,git 都会发现 Xcode 版本的未匹配项(例如,我正在使用 Xcode 5.1,而我的队友正在使用 Xcode 5.0.1,该项目是使用 Xcode 4.1 初始化的)并设置当前的核心数据版本到非常旧的版本,在我的情况下是 dataModel 1.xcdatamodel。这就是为什么该项目在我这边运行良好,但是当我的队友从 git 中提取我的代码并尝试在他这边运行时,它每次都会崩溃,因为 git 将版本设置为旧版本。

我从here 得到这个。按照说明操作后,问题暂时解决了。

谢谢大家。如果您有更好的解决方案,请分享。

【讨论】:

以上是关于核心数据版本控制,总是加载以前的版本的主要内容,如果未能解决你的问题,请参考以下文章

CoreData 版本控制和阻塞轻量级迁移

核心数据模型版本控制和数据迁移

核心数据模型版本控制,没有 xcdatamodeld 文件

核心数据版本控制(轻量级迁移)问题

核心数据版本控制和迁移

核心数据版本控制 - 需要多个映射模型