由于Coredata迁移,从appstore更新后,应用程序崩溃了

时间:2017-04-18 05:47:00

标签: ios swift core-data app-store

我的应用程序适用于第一个版本v1。

在第二版v2中,我在进行coredata迁移时犯了一个错误 - 我在我的coredata中偶然给出了一个实体的重命名ID(以前它是空的)。由于应用程序在更新时崩溃了,但是在新下载v2版本时它正在运行。

现在,我应该在下一个版本v3中做些什么来修复此崩溃?

如果我要将实体的重命名ID替换为空,请从v1更新应用 - > v2 - > v3将正常运作。

但如果用户刚刚下载了v2,它将再次崩溃。

请为此问题给我一些解决方法。提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用核心数据轻量级迁移。轻量级迁移在应用程序开发的早期阶段特别方便,因为您可能经常更改托管对象模型,但您不希望继续重新生成测试数据。您可以迁移现有数据,而无需为用于创建需要迁移的商店的每个模型版本创建自定义映射模型。

核心数据必须能够推断映射

要执行自动轻量级迁移,Core Data需要能够在运行时自行查找源和目标托管对象模型。 Core Data在NSBundle的allBundles和allFrameworks方法返回的包中查找模型。如果将模型存储在其他位置,则必须按照使用迁移管理器中描述的步骤(如果无法自动找到模型)。然后,核心数据必须分析对持久性实体和属性的模式更改,并生成推断的映射模型。

要使Core Data能够生成推断的映射模型,更改必须符合明显的迁移模式,例如:

  • 简单添加新属性
  • 删除属性
  • 非可选属性变为可选
  • 可选属性变为非可选属性,并定义默认值 价值
  • 重命名实体或财产

来源:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.html