【问题标题】:Back Up & Receive Core data SQlite3 database备份和接收核心数据 SQlite3 数据库
【发布时间】:2014-11-27 16:29:25
【问题描述】:

我想备份和检索核心数据中的 sqlite3 数据库。这是为了快速保存和恢复保存在应用程序中的用户数据。计划是通过电子邮件发送数据库,然后在接收设备上打开它,所有以前的数据都会神奇地出现,一切都很好。

我已经阅读了很多关于这个主题的帖子和文档,但是将它们放在一起是我可以提出一些建议的地方。

到目前为止我做了什么:

我已设法使用以下方式向sqlite3database 发送电子邮件

NSString *filePath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"db.sqlite"];
NSError *error = nil;

    NSData *fileData = [[NSData alloc] initWithContentsOfFile:filePath options:0UL error:&error];
    if (error != nil) {
        DebugLog(@"Failed to read the file: %@", [error localizedDescription]);
    } else {
        if (fileData == nil) {
            DebugLog(@"File data is nil");
        }
    }

    MFMailComposeViewController *mailView = [[MFMailComposeViewController alloc] init];
    if (mailView != nil) {
        mailView.mailComposeDelegate = self;
        [mailView setSubject:@"back up database"];
        [mailView addAttachmentData:fileData
                           mimeType:@"application/octet-stream"
                           fileName:@"db.sqlite3"];

        [mailView setMessageBody:@"Database attached"
                          isHTML:NO];


        [self presentViewController:mailView animated:YES completion: NULL];

    }

进一步的研究让我相信我必须将其他期刊文件附加到此? iOS: How can I create a backup copy of my core data base? And how to export/import that copy?

我已将这些文档记录为db.sqlite db.sqlite-shm db.sqlite-wal

我的问题是 1. 我是否将所有这些db.sqlite db.sqlite-shm db.sqlite-wal 作为电子邮件的附件发送? 2. 接收这些文件并将它们复制到应用程序中的程序是什么。
仅打开附件不起作用,因为它只能由某些应用程序读取。然后,我在 info.plist 中创建了 Document 类型,我的应用程序作为接收文档的应用程序出现在操作表中,但应用程序崩溃并出现错误 incomprehensible archive

总之,我该如何保存和恢复我的核心数据

【问题讨论】:

    标签: ios objective-c core-data sqlite


    【解决方案1】:

    将所有 3 个 sqlite 文件归档到一个 zip 文件中,并将其命名为 Backup.myappbackup 或类似名称(最好在文件名中添加备份日期)。您可以注册扩展程序以被您的应用程序识别,这将允许 Mail.app 识别此扩展程序并在您的应用程序中打开此备份。接下来,您将取消归档核心数据文件,在您的位置替换它们并重新配置核心数据堆栈。您还可以允许用户通过 iTunes 共享放置您的备份并从您的 Documents 文件夹中恢复它。

    【讨论】:

    • 感谢您的回复,听起来很有趣...我会尝试这样做,如有必要,我会向您提供一些更新的代码。您能否进一步解释一下您通过文档文件夹中的 iTunes 共享进行备份的建议?谢谢
    • @JSA986 iTunes 分享请看raywenderlich.com/1948/…
    • 感谢您的链接将检查出来
    猜你喜欢
    • 2014-05-30
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多