Iphone 一次迁移多个版本的核心数据不起作用?

Iphone 一次迁移多个版本的核心数据不起作用?,iphone,core-data,migration,Iphone,Core Data,Migration,对我的核心数据模型使用轻量级迁移。在模拟器中,每次更新都进展顺利 在我的设备上,我没有一个接一个地完成每个迁移。例如,我的设备版本为3,而我的设备版本为5。在模拟器上,我从3到4,然后从4到5,但是当设备试图从3到5时,它崩溃了,因为源存储错误的标准找不到模型 如果我依赖于轻量级迁移(即用户不能跳过对我的应用程序的更新),这似乎会使更新我的应用程序变得不可能 是这种情况,还是我可能做错了其他事情?轻量级迁移旨在累积。如果不使用正式的版本控制,这一点尤其正确 我总是告诉客户,轻量级迁移主要用于开发

对我的核心数据模型使用轻量级迁移。在模拟器中,每次更新都进展顺利

在我的设备上,我没有一个接一个地完成每个迁移。例如,我的设备版本为3,而我的设备版本为5。在模拟器上,我从3到4,然后从4到5,但是当设备试图从3到5时,它崩溃了,因为源存储错误的标准找不到模型

如果我依赖于轻量级迁移(即用户不能跳过对我的应用程序的更新),这似乎会使更新我的应用程序变得不可能


是这种情况,还是我可能做错了其他事情?

轻量级迁移旨在累积。如果不使用正式的版本控制,这一点尤其正确

我总是告诉客户,轻量级迁移主要用于开发目的。你指望着一个软件能够解决版本之间的变化。更改越小、越简单,软件就能管理得越好。在某种程度上,这种变化变得复杂,软件无法处理

如果没有正式的版本控制,原则上你可以跳过一个版本,只要软件能够找出变化。在实践中,迁移软件很容易混淆,如果进行任何实质性更改,就会损坏

对于部署,您应该始终计划使用全重量版本化迁移。如果您设想了许多更新,这一点尤其正确。您是否希望该软件能够处理从版本1到版本5或更高版本的迁移,以及任何两个或更多版本之间的迁移

还要记住,任何迁移都必须存在上一个模型文件。如果要跳过正式或其他版本,则必须保留要移植的所有早期版本的所有模型文件。如果版本5的更新未提供或保留版本3的模型,则无法对现有存储执行任何迁移。在实践中,这意味着每个版本都附带所有以前版本的模型文件。串联升级通常更容易、更安全,最终用户已经习惯了这样做


在这种情况下,如果不仔细查看模型,就很难判断您的实际问题是什么。这可能是一个简单的过程,因为对于轻量级迁移软件来说,迁移变得非常复杂。软件无法理解版本5如何映射到版本3

轻量级迁移旨在累积。如果不使用正式的版本控制,这一点尤其正确

我总是告诉客户,轻量级迁移主要用于开发目的。你指望着一个软件能够解决版本之间的变化。更改越小、越简单,软件就能管理得越好。在某种程度上,这种变化变得复杂,软件无法处理

如果没有正式的版本控制,原则上你可以跳过一个版本,只要软件能够找出变化。在实践中,迁移软件很容易混淆,如果进行任何实质性更改,就会损坏

对于部署,您应该始终计划使用全重量版本化迁移。如果您设想了许多更新,这一点尤其正确。您是否希望该软件能够处理从版本1到版本5或更高版本的迁移,以及任何两个或更多版本之间的迁移

还要记住,任何迁移都必须存在上一个模型文件。如果要跳过正式或其他版本,则必须保留要移植的所有早期版本的所有模型文件。如果版本5的更新未提供或保留版本3的模型,则无法对现有存储执行任何迁移。在实践中,这意味着每个版本都附带所有以前版本的模型文件。串联升级通常更容易、更安全,最终用户已经习惯了这样做


在这种情况下,如果不仔细查看模型,就很难判断您的实际问题是什么。这可能是一个简单的过程,因为对于轻量级迁移软件来说,迁移变得非常复杂。软件无法理解版本5如何映射到版本3

本质上,我在版本4中将文本字段添加到实体中,在版本5中将数字字段添加到同一实体中。这两个字段都不是必需的。这看起来很简单,每次我做改变时都会创建新的版本。无论如何,轻量级迁移听起来似乎不足以在产品中使用。我不建议在发布版中使用它。您正在计算自动代码生成,以便在没有监督的情况下做出运行时操作编码决策。如果它出错,你和你的用户就完蛋了。如果你有一个
大型现有数据库,但您可以通过在发行版中花费一点开发时间进行正式迁移来获得大量安全性。基本上,我在版本4中为实体添加了一个文本字段,在版本5中为同一实体添加了一个数字字段。这两个字段都不是必需的。这看起来很简单,每次我做改变时都会创建新的版本。无论如何,轻量级迁移听起来似乎不足以在产品中使用。我不建议在发布版中使用它。您正在计算自动代码生成,以便在没有监督的情况下做出运行时操作编码决策。如果它出错,你和你的用户就完蛋了。如果您有一个大型的现有数据库,那么它对于开发来说是一个节省时间的工具,但是您可以通过花费一点开发人员时间在发行版中进行正式迁移来获得很多安全性。