【问题标题】:How the Core Data Migration will work for two projects?Core Data Migration 将如何适用于两个项目?
【发布时间】:2015-03-02 05:21:10
【问题描述】:

我正在开发一个使用核心数据的应用程序(一个应用程序已经在 AppStore 上运行)。好的,现在我想让它完全适用于 iOS8 并且客户还要求我对 UI 及其结构进行良好的更改,所以我开始了一个完整的新项目并决定自己编写代码。一切正常,然后客户给我发电子邮件并确认,如果现有应用程序将得到更新,新版本的应用程序应该存储并从数据库中获取现有值。我在这里感觉很糟糕。

我知道核心数据迁移是可能的(我也读过this,但我对这个概念有些误解。

  • 正如我所说,我开始了一个新项目,但是否可以添加新版本的模型?
  • 我们的实体和属性名称不同。我按照我想要的方式命名它。
  • 我们的型号名称相同。例如Somename.xcdatamodel
  • 我的应用将更新为 AppStore 上的现有应用。

如何将现有的核心数据数据库迁移到新的?

  • 这可能吗?怎么样?

对此的任何建议和帮助将不胜感激。

注意: 我看了这个问题Core Data Migration: How to delete the Core Data stack?,发现删除之前的模型没有问题?你有什么建议?

【问题讨论】:

标签: ios core-data core-data-migration


【解决方案1】:

如果您需要迁移并保留现有数据,您应该阅读有关编写自定义策略Core Data Versioning Guide 的更多信息。完整阅读本指南,了解您的应用迁移属于哪个类别。 1. 轻量级迁移。 2. 或者您必须编写自己的自定义策略。

据我所知,从您提供的详细信息来看,这可能是一个轻量级迁移,您无需执行任何操作,只需将新版本添加到 xcdatamodel 和映射模型即可。如果没有,那么您必须编写自己的自定义策略和映射模型。

还要确保正确测试升级。

【讨论】:

  • 您可以将旧版本文件添加到您的数据库中,然后创建从旧模型到新模型的映射,将您的新模型作为当前模型。如果只是实体中的命名更改,轻量级迁移会处理它。您当然应该阅读上面提到的 Apple 文档。它是版本控制的最佳资源。
  • 这就是映射的全部内容。您必须在映射中提及旧属性名称。请阅读我上面提到的文件。这是最好的指南。您剩下的问题可以通过它来回答。
猜你喜欢
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多