Iphone 将默认记录恢复到核心数据数据库

Iphone 将默认记录恢复到核心数据数据库,iphone,core-data,Iphone,Core Data,我有一个iPhone应用程序,它有一个预加载了默认数据的sqlLite核心数据模型。如果用户修改或删除了模型中的记录,我希望用户能够恢复此默认数据,同时保留用户添加到模型中的任何新记录 sqlLite数据库在第一次运行时复制到users documents目录,因此未触及的原始数据库在应用程序包中可用。在两个数据库之间复制记录的最简单方法是什么?我假设它涉及到设置一个额外的persistentStoreCoordinator,或者将原始数据库作为一个额外的persistentStore添加到co

我有一个iPhone应用程序,它有一个预加载了默认数据的sqlLite核心数据模型。如果用户修改或删除了模型中的记录,我希望用户能够恢复此默认数据,同时保留用户添加到模型中的任何新记录

sqlLite数据库在第一次运行时复制到users documents目录,因此未触及的原始数据库在应用程序包中可用。在两个数据库之间复制记录的最简单方法是什么?我假设它涉及到设置一个额外的persistentStoreCoordinator,或者将原始数据库作为一个额外的persistentStore添加到coordinator中,但是文档在如何实现这一点上略知一二

谢谢


Jk

如果您不想删除目标存储并覆盖它,那么工作流是:

  • 使用源持久存储建立第二个核心数据堆栈
  • 从源获取每个实体
  • 在目标中查找对象
  • 如果存在,请更新它
  • 如果没有,就创建它
  • 保存目标存储

  • 根据您拥有的数据量,这可能是一项非常昂贵的操作。

    如果您不想删除目标存储并覆盖它,则工作流是:

  • 使用源持久存储建立第二个核心数据堆栈
  • 从源获取每个实体
  • 在目标中查找对象
  • 如果存在,请更新它
  • 如果没有,就创建它
  • 保存目标存储

  • 根据您拥有的数据量,这可能是一项非常昂贵的操作。

    谢谢,Marcus。这就是我想我必须要做的。有问题的对象有一个BOOL属性isCustom,因此我可以从读/写持久存储中删除所有不是自定义用户创建的对象,然后从原始dB持久存储中插入所有对象。谢谢,Marcus。这就是我想我必须要做的。有问题的对象有一个BOOL属性isCustom,因此我可以从读/写持久存储中删除所有非自定义用户创建对象的对象,然后插入原始dB持久存储中的所有对象。