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 模型更新崩溃的主要内容,如果未能解决你的问题,请参考以下文章