Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 由于Coredata迁移,应用程序在从appstore更新后崩溃_Ios_Swift_Core Data_App Store - Fatal编程技术网

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

Ios 由于Coredata迁移,应用程序在从appstore更新后崩溃,ios,swift,core-data,app-store,Ios,Swift,Core Data,App Store,我的应用程序在第一个版本v1中运行良好 在第二版v2中,我在进行coredata迁移时犯了一个错误——我无意中为coredata中的一个实体(以前是空的)提供了重命名ID。由于该应用程序在更新时崩溃,但在新下载v2版本时仍能正常工作 现在,在我的下一个版本v3中,我应该做什么来修复这个崩溃 如果我将实体的重命名ID替换为空,则从v1->v2->v3更新应用程序将有效 但如果用户刚下载了v2,它将再次崩溃 请给我一些解决这个问题的方法。提前感谢。使用核心数据轻量级迁移。在应用程序开发的早期阶段,轻

我的应用程序在第一个版本v1中运行良好

在第二版v2中,我在进行coredata迁移时犯了一个错误——我无意中为coredata中的一个实体(以前是空的)提供了重命名ID。由于该应用程序在更新时崩溃,但在新下载v2版本时仍能正常工作

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

如果我将实体的重命名ID替换为空,则从v1->v2->v3更新应用程序将有效

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


请给我一些解决这个问题的方法。提前感谢。

使用核心数据轻量级迁移。在应用程序开发的早期阶段,轻量级迁移尤其方便,因为您可能会频繁更改托管对象模型,但不希望必须不断重新生成测试数据。您可以迁移现有数据,而无需为用于创建需要迁移的存储的每个模型版本创建自定义映射模型

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

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

为了使核心数据能够生成推断的映射模型,更改必须符合明显的迁移模式,例如:

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

来源:

我正在使用coredata轻量级迁移。我的问题是如何处理从v2到v3的迁移。从v1到v2到v3的迁移将起作用。您在新下载v2版本时说它起作用。如果您使用了核心数据迁移,那么在从v2迁移到v3时它不会崩溃。您知道,我们必须在下一版本中保持重命名ID不变。如果我省略了ID并发布,它将崩溃。检查本文,它将帮助您