【发布时间】:2017-02-22 08:40:26
【问题描述】:
问题:
我们最近在我们的应用中引入了 CoreData,之前发布了一个带有不完整 CoreData 模型的版本。在发布的版本中,我们从未实现将数据写入 sqlite 数据库的代码,只实现了模型。
在我们的内部测试中,我们会将我们的设备恢复为之前发货的不完整型号,然后更新到较新的型号,并且无需执行迁移,也没有遇到不兼容的商店异常。
但是,在我们的 Beta 测试中,我们发现现有用户由于商店不兼容而遇到崩溃,而一些现有用户则没有。
问题:
不兼容的存储是否总是会导致崩溃,如果是这样,为什么我们在从旧版本更新到不同的 CoreData 模型时不会遇到崩溃?
我应该提到,当我们对最新的 CoreData 模型进行更改时,我们确实会抛出不兼容的存储错误,但是当我们恢复到我们的核心数据模型的非常原始版本时,我们不会看到抛出这个异常。
【问题讨论】:
-
当您对 coredata 进行任何更改时,如果您仍然使用旧版本,则必须删除旧版本并使用新版本,这样会导致您崩溃。
-
如果您在安装前删除了您设备上的应用程序,那么它就没有 CoreData 架构冲突,因此不会崩溃。如果您的测试用户在使用具有不同 CoreData 架构的新版本应用程序之前没有从他们的设备上删除该应用程序,那么架构中的冲突将导致崩溃。
标签: ios objective-c swift core-data nsmanagedobject