Core data 核心数据:逐对象复制数据库

Core data 核心数据:逐对象复制数据库,core-data,nsmanagedobjectcontext,nspersistentstore,Core Data,Nsmanagedobjectcontext,Nspersistentstore,我希望创建核心数据数据库的备份副本,而不使用文件管理器来创建sqlite文件的副本,也不使用持久存储协调器的migratePersistentStore方法(此处无法解释太长的原因)。我想做的是用与原始文件相同的MOMD打开一个新的持久存储,创建一个新的托管对象上下文,然后迭代数据库中的所有对象并将它们插入新上下文 这将适用于简单实体,但问题是我的模型有大约20个实体,其中许多实体具有一对多和多对多关系。稍微复杂一点的解决方案是将每个对象插入到新的MOC中,然后将所有新的托管对象保存在内存中,并

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

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

有没有一种干净、优雅的方法可以实现这一点,它可以适用于任何类型的数据模型,而不仅仅是针对我自己的模型的定制解决方案,而且不必同时在内存中保存每个对象


谢谢。

复制持久性存储远不是最简单的方法——我建议您重新审视反对它的理由或解释原因


将对象从一个上下文复制到另一个上下文(从一个磁盘上的持久存储复制到另一个)并不一定同时将它们全部保存在内存中。核心数据可能会将其转化为故障。

谢谢。我之所以不能这样做,是因为iCloud有一些限制,你不能仅仅迁移或复制一个文件,然后将其与其他iCloud帐户(甚至没有iCloud帐户)一起使用。首先,你如何从iCloud获取数据?这是通过使用migratePSC API实现的,但事实证明它占用了大量内存。这就是为什么我想使用逐对象复制来实现它,这样我可以更好地控制内存压力。