备份核心数据

时间:2011-07-21 02:17:24

标签: iphone core-data database-backups

我想备份我的核心数据库。我已经读过我需要做的就是保存sqlite文件。我仍然不确定这是否真的如此。无论哪种方式,我一直在尝试保存sqlite文件,但我不知道该怎么做。我想我可以使用下面的代码来实现它。只是不知道下一步该去哪里。

GroupAppDelegate *appDelegate= (GroupAppDelegate *)[[UIApplication sharedApplication] delegate];

NSURL *storeURL = [[appDelegate applicationDocumentsDirectory] URLByAppendingPathComponent:@"Group.sqlite"];

NSData *sqliteData = [[NSData alloc] initWithContentsOfURL:storeURL];
  1. 如何实际保存该文件?
  2. 我甚至要把它变成NSData吗?
  3. 我进行了设置,以便连接到Dropbox,现在我需要在那里保存核心数据。

2 个答案:

答案 0 :(得分:0)

如果你有sqlite文件的NSURL句柄,你不需要将它转换为NSData或任何东西。您可以通过多种方式从设备中检索文件: a)将其作为附件通过电子邮件发送。 (看看MFMailComposeViewController) b)使用DropBox API将文件传输到DropBox帐户。查看DropBox API c)使用iTunes传输文件。有一些方法可以做到这一点,但目前没有参考。

答案 1 :(得分:0)

请注意,从iOS 7开始,接受的答案是一个坏主意,因为sqlite文件有其他支持文件,并且不能单独运行!

  

使用以下NSPersistentStoreCoordinator类方法而不是文件系统API来备份和还原Core Data存储:

     
      
  • (NSPersistentStore *)migratePersistentStore :( NSPersistentStore *)存储toURL:(NSURL *)URL选项:(NSDictionary *)选项withType:(NSString *)storeType错误:(NSError **)错误
  •   
     

请注意,这是我们推荐的选项。

通过Apple