备份恢复SQLite的核心数据iphone
问题描述:
我的工作,我创建我的应用程序sqllite文件的实例,并对其进行设置,使用户可以将备份文件通过电子邮件发送给他/她自己的电子邮件项目。我已经在iStudiezPro上看到了这一点,它的功能奇迹般。备份恢复SQLite的核心数据iphone
我可以得到电子邮件打开应用程序文件和恢复的问题是,持久性存储,更新应用程序将需要重新加载。 当回来的应用程序,我这样做:
[persistentStoreCoordinator release];
persistentStoreCoordinator = nil;
[managedObjectContext release];
managedObjectContext = nil;
[primaryUserManagedObject release];
primaryUserManagedObject = nil;
[self managedObjectContext];
我只需要找到应用程序的方式应用程序运行时重建核心数据堆栈。任何帮助,将不胜感激。
答
最简单的办法是只保存环境,然后存储文件复制到文档中使用标准的文件管理方法的文件夹。如果你确定没有正在进行的核心数据操作,我认为你不会有任何腐败问题。
如果你想额外的保护,复制之前,释放和为零的managedObject环境,然后持久存储协调。复制完成后,重建堆栈。没有理由重新启动应用程序本身。您可能必须创建一个专用对象来管理Core Data堆栈,以便它可以打开和关闭。
答
我已上传一个示例应用程序,它提供备份和恢复功能的多种不同的方式,包括本地备份,通过iTunes复制备份和从iCloud中,邮件备份,电子邮件中导入,文件的拷贝。有关展示这些功能的视频,请参阅下面的链接,您可以从网站下载示例应用程序。
本质上,这就是我正在做的。在关闭sqllite文件后,我尝试在我的应用程序委托中重新初始化我的managedObjectContext,请记住,在我的整个应用程序中,我引用了我的appDelegate中的primaryUserManagedObject和managedObjectContext。我遇到的问题是我不明白如何重建我的Core Data堆栈。 – zaid 2011-03-14 20:31:00
如果您在Xcode使用默认的核心数据模板,仅仅访问managedObjectContext将触发核心数据堆栈初始化,因为背景是,如果它不存在的访问创造,这反过来又触发初始化的管理对象模型,持久性商店协调员和持久性商店文件。因此,如果您将所有内容都清零并重新访问它们,则应该使用新实例重新初始化。我认为。我没有那样做过。如果你看看模板,倾向于构建堆栈并不难。它显示了你几乎所有的东西。 – TechZen 2011-03-14 21:55:02