我正在开发一个项目,我创建了一个app sqllite文件的实例并进行设置,以便用户可以将备份文件通过电子邮件发送给他/她自己的电子邮件。我已经在iStudiezPro上看到了这个,它神奇地工作。
我可以通过电子邮件打开app文件并恢复,问题是持久性存储更新应用程序必须重新加载。 回到应用程序时,我这样做:
[persistentStoreCoordinator release];
persistentStoreCoordinator = nil;
[managedObjectContext release];
managedObjectContext = nil;
[primaryUserManagedObject release];
primaryUserManagedObject = nil;
[self managedObjectContext];
我只需要找到一种方法让应用程序在应用程序运行时重建核心数据堆栈。任何帮助将不胜感激。
答案 0 :(得分:2)
最简单的解决方案是保存上下文,然后使用标准fileManager方法将商店文件复制到文档文件夹。如果您确保没有正在进行的核心数据操作,我认为您不会有任何腐败问题。
如果您需要额外的保护,请在复制,发布和删除managedObject上下文,然后是持久性存储协调器之前。复制完成后,重建堆栈。没有理由重启应用程序本身。您可能必须创建一个专用对象来管理Core Data堆栈,以便可以打开和关闭它。
答案 1 :(得分:0)
我上传了一个示例应用程序,该应用程序以多种不同方式提供备份和还原功能,包括本地备份,iCloud复制备份,电子邮件备份,从电子邮件导入以及通过iTunes进行文件复制。有关演示这些功能的视频,请参阅以下链接,您可以从该网站下载示例应用程序。