3

在我的应用程序的最新版本中,我在现有表中添加了 1 个新列。没什么大不了的,只是一个简单的标志。我提升了数据模型版本并将其设置为活动模型,并且我一直在成功使用自动轻量级迁移策略进行最后几次应用程序更新。

少数用户报告说,在升级到我的应用程序的最新版本后,他们会丢失所有数据,并且应用程序在尝试写入/读取 CoreData 时崩溃。我无法复制这个问题。

为什么自动迁移适用于大多数用户,但不是所有用户?


回答

在这个特定的例子中,问题最终是我在不知情的情况下不小心修改了一个旧版本的 xcdatamodel 文件。当我发布应用程序的新版本时,有少数用户很长时间没有更新,因此他们拥有的“最新”版本的 xcdatamodel 与我意外更改的文件相同。当试图在他们的设备上进行迁移时,它会阻塞,因为它想要迁移的数据模型文件的版本已被修改。

为了解决这个问题,我必须确定我在旧 xcdatamodel 文件中所做的更改,撤消更改并发布应用程序更新。一旦受此影响的用户更新到最新版本,迁移工作。


附加信息:

它们似乎唯一的共同点是它们都运行 iOS 6.1.3。我自己无法复制这个。我有一台运行 iOS 6.1.3 的设备,但无论我从我的应用程序的一个版本升级到下一个版本多少次,它都能正常工作。我什至尝试跳过几个版本并从旧版本升级到最新版本,效果很好。

对于它的价值,我正在使用这篇文章中概述的自动迁移策略,它在最近 8 或 10 次应用程序更新中运行良好,包括在我的 CoreData 模型中添加/删除的一些主要新内容。

4

0 回答 0