核心数据:制作数据库的逐个对象副本

时间:2012-12-05 19:18:39

标签: core-data nsmanagedobjectcontext nspersistentstore

我想制作核心数据数据库的备份副本,而不使用文件管理器制作sqlite文件的副本,或使用持久存储协调器的migratePersistentStore方法(原因太长,无法在此解释) )。我想要做的是使用与原始文件相同的MOMD打开一个新的持久性存储,创建一个新的托管对象上下文,然后迭代我的数据库中的所有对象并将它们插入到新的上下文中。

这适用于简单实体,但问题是我的模型有大约20个实体,其中许多实体具有一对多和多对多关系。稍微复杂的解决方案是将每个对象插入到新的MOC中,然后将所有新的受管对象保存在内存中,并使用它们来构成后续过程中对象之间的所有关系。但这似乎是一个非常混乱的解决方案。

是否有一种干净,优雅的方式来实现这一目标,这可能适用于任何类型的数据模型,而不仅仅是我自己的模型的自定义解决方案,而不必同时将每个对象保存在内存中?

感谢。

1 个答案:

答案 0 :(得分:0)

复制持久性商店远远超出最简单的方法 - 我建议重新审视你的理由或解释它们是什么。

将对象从一个上下文复制到另一个上下文 - 从一个磁盘上的持久存储复制到另一个 - 不一定同时将它们全部保存在内存中。核心数据可以将它们变成故障。