更改 coredata 版本时合并数据
Posted
技术标签:
【中文标题】更改 coredata 版本时合并数据【英文标题】:Merge data when change coredata version 【发布时间】:2013-11-19 08:16:19 【问题描述】:在看问题之前,先来看看我的coredata schema:
我的 coredata 架构的版本 1:
--Entity:
<Family>, <Member>, <Note>
<Note> Attribute:
content: string
--Relationship:
Family 1-many Member
Member 1-1 Note (*)
在版本 2 中,coredata 架构:
--Entity:
<Family>, <Member>, <Note>
<Note> Attribute:
content: string
--Relationship:
Family 1-1 Note (*)
Family 1-many Member
因此,这意味着我希望将注意范围从成员升级到家庭(查看两个版本中的 *)。
问题是:如何将所有成员的所有笔记内容合并到一个大笔记中,然后添加到新家庭的笔记中。
例子:
Before:
family.mem1.note = "mem1 note"
family.mem2.note = "mem2 note"
After:
family.note = "mem1 note, mem2 note"
P/S:很抱歉问这种问题,因为我对 migrate coredata 的了解只是轻量级迁移。在这个问题上,轻量级迁移删除所有笔记,这是我不想要的选项。苹果没有太多关于迁移的文件,比如......这个。
【问题讨论】:
【参考方案1】:您必须以编程方式执行此操作。我建议将您现有的会员笔记保留在新模型中并添加家庭笔记。现在轻量级迁移将起作用,然后在迁移完成后使用自定义函数通过迭代所有 Family.members 并将 member.note 附加到 Family.note 来更新每个 Family.note。
【讨论】:
可能不是制作应用程序的好方法...从编程上讲,我同意这部分。但是分两步分离它并使用轻量级迁移,显然不是让它工作的好方法。我想使用其他方式,例如自定义迁移或类似的方式...抱歉,您的解决方案不适合这里。以上是关于更改 coredata 版本时合并数据的主要内容,如果未能解决你的问题,请参考以下文章
合并更改的 CoreData 和 NSFetchedResultsController