gpt4 book ai didi

ios - 备份和接收核心数据 SQlite3 数据库

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:57 24 4
gpt4 key购买 nike

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

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

到目前为止我做了什么:

我已经成功地使用以下方式向 sqlite3 数据库发送电子邮件

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 中创建了一个文档类型,我的应用程序作为接收文档的应用程序出现在操作表中,但应用程序崩溃并出现错误 incomprehensible archive

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

最佳答案

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

关于ios - 备份和接收核心数据 SQlite3 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com