【发布时间】:2014-08-22 14:08:58
【问题描述】:
我的 iOS 应用程序正在使用 NSCoreData 并将大量数据存储在数据库中。我在 xcode 的 *.xcdatamodeld 文件中设计了数据库模式。我计划尽快更新我的应用程序并且需要稍微更改架构。但是,当我测试它时,新版本正在删除所有旧数据,保存在以前的版本中。
如何在不丢失应用中旧数据的情况下有效地迁移到新的数据库架构? 我试图用谷歌搜索一个合适的解决方案,但找不到任何有效的想法,如何去做。
【问题讨论】:
-
了解您更改架构的程度会很有帮助。如果它们是较小的更改,则自动迁移会处理它 - 您只需要添加另一个模型版本号。如果它们是重大更改,那么您需要编写手动迁移
-
您好,改动很小。我需要在实体中添加一些额外的属性。您能否指出任何参考,如何在我的模型中设置版本号?
-
那么你只需要做一个自动迁移。搜索它,因为它很容易在您的代码中实现。此外,在 Google 上快速搜索“xCode 型号”会将您指向 Apple Docs:developer.apple.com/library/Mac/recipes/… 和 developer.apple.com/library/Mac/recipes/…
-
谢谢!这很有帮助。一个小问题。如果我已经发布的应用没有任何型号版本号,如果我在新版本中分配一个版本号,它会工作吗?
-
应该的。但老实说,这个问题对你来说很快就得到了回答——从应用商店安装应用,然后在设备上使用新型号从 xCode 运行它。你可以看到自己会发生什么。如果它不起作用,那么您可以研究如何修复它。
标签: ios objective-c core-data