Coredata轻量级迁移丢失数据

Posted

技术标签:

【中文标题】Coredata轻量级迁移丢失数据【英文标题】:Coredata Lightweight migration lost data 【发布时间】:2019-08-21 06:56:30 【问题描述】:

我不是核心数据方面的专家 :(,

我遵循的步骤

    创建了新的模态版本(编辑器 --> 添加新的模态版本) 选择当前模态版本(新添加的模态上显示绿色复选标记) 新增字符串类型属性,可选类型

    在 AppDelegate 中为 NSPersistentContainer 添加了以下代码

    let description = NSPersistentStoreDescription()
    description.shouldMigrateStoreAutomatically = true
    description.shouldInferMappingModelAutomatically = true
    container.persistentStoreDescriptions = [description]
    

    我的旧模式版本有很多记录,我也希望看到所有新模式的记录,但是当我刚刚运行应用程序时,我发现所有数据都像空模型一样丢失。

这是轻量级迁移的默认行为吗?还是我错过了什么

请指导

【问题讨论】:

NSPersistentContainer 默认启用轻量级迁移。额外的代码是多余的。并且迁移不会删除任何内容。如果无法迁移,则会出现错误。 @vadian 是的,在评论您建议所有数据的额外代码后,所有数据都回来了。 @PrashantTukadiya 确保您只执行轻量级迁移。你可以参考这个教程。 raywenderlich.com/… 检查“推断映射模型”部分 @PavanKotesh Vadian 的评论解决了这个问题,我已经删除了 NSPersistentStoreDescription 并且所有数据都恢复了,无论如何感谢您的帮助 【参考方案1】:

NSPersistentContainer 默认启用轻量级迁移。 删除多余的代码

并且迁移不会删除任何数据。如果无法迁移,则会出现错误。

【讨论】:

以上是关于Coredata轻量级迁移丢失数据的主要内容,如果未能解决你的问题,请参考以下文章

不使用旧模型迁移数据

CoreData 版本控制和阻塞轻量级迁移

iOS 上的 CoreData 轻量级迁移失败

CoreData的简单使用数据的增删改查,轻量级的版本迁移

CoreData:从 xcdatamodel 版本 n 到 n+5 的轻量级迁移

iOS CoreData 版本升级和数据库迁移