CoreData 模型更新崩溃

Posted

技术标签:

【中文标题】CoreData 模型更新崩溃【英文标题】:CoreData model update crashes 【发布时间】:2013-01-03 18:17:32 【问题描述】:

当我更新我的 CoreData 模型时,应用程序崩溃了,所以我必须删除旧应用程序,然后重新安装。这对我来说很好,但我的问题是:我如何告诉我的客户他们必须在重新安装之前删除应用程序?这似乎太复杂了...我只是在模型中添加 1 个附加字段,仅此而已。

有没有更好的方法来解决这个问题?

谢谢

【问题讨论】:

清空数据库,删除所有条目。 拉米:迁移是一个更好的主意。程序员的工作量更大,但客户的体验更好。 【参考方案1】:

您需要设置数据库迁移...以便在客户更新时将其现有数据升级到最新的数据模型。对于某些更改,Core Data 可以为您完成。对于其他人,您必须自己编写迁移代码。

也许从这里开始:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html

【讨论】:

这很痛苦,但会提供卓越的用户体验,这是优秀应用与其他应用的区别。【参考方案2】:

就像@Nielsbot 所说,Core Data 使用了一个迁移系统。

您可以创建模型的新版本并选择要使用的版本。在您的 AppDelegate 方法中有一些代码需要更改,其中持久存储协调器加载模型以告诉它加载版本。我建议您阅读 Apple 关于如何实现此功能的文档:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html

【讨论】:

【参考方案3】:

如果您只是将一个字段添加到表中,那么您可以创建一个新版本的数据库。保持当前不变。

在其中一个菜单中有一个创建新数据版本之类的东西。

在新版本中进行更改。

有很多关于如何做到这一点的教程。

如果您发布的更新导致应用程序崩溃,那么苹果将不会批准它,所以无论如何您都必须这样做。

【讨论】:

以上是关于CoreData 模型更新崩溃的主要内容,如果未能解决你的问题,请参考以下文章

防止升级用户的 CoreData 崩溃

更新 iOS Core Data 版本以避免崩溃

不兼容的 CoreData 存储是不是总是导致崩溃?

Coredata 迁移崩溃

从自定义框架访问 Coredata 时应用程序崩溃

iOS CoreData 版本升级和数据库迁移