备份恢复SQLite的核心数据iphone

问题描述:

我的工作,我创建我的应用程序sqllite文件的实例,并对其进行设置,使用户可以将备份文件通过电子邮件发送给他/她自己的电子邮件项目。我已经在iStudiezPro上看到了这一点,它的功能奇迹般。备份恢复SQLite的核心数据iphone

我可以得到电子邮件打开应用程序文件和恢复的问题是,持久性存储,更新应用程序将需要重新加载。 当回来的应用程序,我这样做:

[persistentStoreCoordinator release]; 
persistentStoreCoordinator = nil; 

[managedObjectContext release]; 
managedObjectContext = nil; 

[primaryUserManagedObject release]; 
primaryUserManagedObject = nil; 

[self managedObjectContext]; 

我只需要找到应用程序的方式应用程序运行时重建核心数据堆栈。任何帮助,将不胜感激。

最简单的办法是只保存环境,然后存储文件复制到文档中使用标准的文件管理方法的文件夹。如果你确定没有正在进行的核心数据操作,我认为你不会有任何腐败问题。

如果你想额外的保护,复制之前,释放和为零的managedObject环境,然后持久存储协调。复制完成后,重建堆栈。没有理由重新启动应用程序本身。您可能必须创建一个专用对象来管理Core Data堆栈,以便它可以打开和关闭。

+0

本质上,这就是我正在做的。在关闭sqllite文件后,我尝试在我的应用程序委托中重新初始化我的managedObjectContext,请记住,在我的整个应用程序中,我引用了我的appDelegate中的primaryUserManagedObject和managedObjectContext。我遇到的问题是我不明白如何重建我的Core Data堆栈。 – zaid 2011-03-14 20:31:00

+0

如果您在Xcode使用默认的核心数据模板,仅仅访问managedObjectContext将触发核心数据堆栈初始化,因为背景是,如果它不存在的访问创造,这反过来又触发初始化的管理对象模型,持久性商店协调员和持久性商店文件。因此,如果您将所有内容都清零并重新访问它们,则应该使用新实例重新初始化。我认为。我没有那样做过。如果你看看模板,倾向于构建堆栈并不难。它显示了你几乎所有的东西。 – TechZen 2011-03-14 21:55:02

我已上传一个示例应用程序,它提供备份和恢复功能的多种不同的方式,包括本地备份,通过iTunes复制备份和从iCloud中,邮件备份,电子邮件中导入,文件的拷贝。有关展示这些功能的视频,请参阅下面的链接,您可以从网站下载示例应用程序。

http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios-core-data-app-with-icloud-integration/sample-apps-explanations/backup-files/