ios - 核心数据轻量级迁移——什么时候版本?

标签 ios cocoa-touch core-data core-data-migration

我可以执行以下操作吗?

  1. 从应用的 v1.0 开始。版本数据模型,将新版本指定为事件模式
  2. 在 appDelegate 中设置正确的选项以使用轻量级迁移创建 NSPersistentStoreCoordinator
  3. 对模型进行简单更改并更新类。编译并验证一切正常。
  4. 在不更改版本的情况下再次更改数据模型,并再次更新类

当然,当我运行时,数据模型将不兼容,因为我在没有版本控制的情况下更改了它。但由于我不会发布中间版本,我怀疑从 v1.0 更新到双更新数据模型时数据迁移应该可以正常工作。

这准确吗?

最佳答案

只要满足以下条件,它就会起作用:

  1. 您已经为每个步骤创建了一个新的模型版本;所以在上面的示例中,最后应该有三个:原始、中间、最终。
  2. 应用程序必须能够执行从 1 到 3 的轻量级迁移。如果不能,则不会通过 2,前提是磁盘上的数据仍为 1 的结构。

如果所有这些都是真的,那么它将起作用。您甚至可以在最终版本中不发布 v2(尽管它们很小,通常不值得付出努力)。

在开发过程中,我的建议是始终保留 v1 数据,仅更改 v2 并在每次需要调整 v2 时重新迁移。然后就没有中间处理了。然而,在与 Beta 测试人员打交道/合作时,这并不总是可能的。

关于ios - 核心数据轻量级迁移——什么时候版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13568144/

相关文章:

ios - 警报 View 没有确定/关闭按钮?

ios - 几天后正在测试的 iPhone 应用程序崩溃

ios - Apple 使用什么公式来计算日历中事件的文本和背景颜色?

objective-c - 如何在 iOS 中使用数字通知 "bubble"?

iphone - 检测 NSManagedObject 特定属性的更改

ios - 关闭模态视图 Controller 时更新前一个 View Controller 中的 pickerView

iphone - 创建一个核心日期实体实例但不希望它被存储(非持久性)

ios - 出乎意料地发现 nil,即使在展开之后

ios - 从 Xib 加载的 UICollectionViewController 中的 collectionView 为 nil

objective-c - 如何处理仅从键盘在 ObjC 源代码中键入嵌套消息调用?