我正在使用Core Data创建应用程序。到目前为止,我使用轻量级迁移进行CoreData迁移。
我可以知道何时应该使用自定义迁移吗?
与自定义迁移相比,轻量级迁移有任何缺点吗?
答案 0 :(得分:1)
我的简短回答如下。
轻量级迁移发生在SQLite级别,并自动处理(您需要在创建存储时设置正确的选项参数)。没有对象加载到内存中,内存要求很低。通常,这种类型的迁移(非常)快。
相反,重度迁移比第一次迁移更困难。执行它,意味着将每个实体加载到内存中,翻译 它从旧商店到新商店,最后写回磁盘。通常它是在后台执行的,因为它可能需要一些时间,所以你应该警告用户正在进行某种类型的处理。它需要开发人员执行更多工作,因为他需要向Core Data说明如何迁移。
说这个, Apple documentation是你的朋友。例如,关于第一种类型的迁移说:
轻量级迁移在早期阶段特别方便 应用程序开发,当您可能正在更改托管对象时 经常建模,但你不想继续进行再生测试 数据。您无需创建自定义即可迁移现有数据 用于创建商店的每个模型版本的映射模型 需要迁移。
此外,您还可以找到其他参考资料。
修改1
总结一下。自定义更复杂。 作为开发人员,您有责任指定Core Data迁移的方式。所以,你需要手动完成。它很慢,通常需要很多时间才能理解发生了什么。相反,光是自动且快速的。您只需要设置选项,Core Data会照顾您。另见 Marcus Zarra 评论。特别是,
此外,您应该避免在iOS上的所有情况下进行大量迁移 它最初并不是设计用于在iOS设备上运行并导致更多 问题比它值得。如果您不能使用轻量级迁移 (这是最好的选择)然后进行出口/进口要好得多 而不是做一个重量级的迁移。