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轻量级迁移丢失数据的主要内容,如果未能解决你的问题,请参考以下文章