1

在我当前的应用程序中,我正在添加数据备份和恢复功能。用户可以创建数据库备份并通过电子邮件发送。在恢复功能中,用户可以从电子邮件中导入数据库并且可以替换当前的。

我能够创建数据库文件的备份和恢复。在恢复中,我只是将文件从我的电子邮件复制到应用程序文档文件替换当前文件。问题是在我的数据库备份代码中,sqlite 数据库被转换为 NSData。我不想被转换并且需要通过电子邮件发送确切的 sqlite 文件。

这是我目前用于通过电子邮件发送 sqlite 数据库的代码

-(void)backUpData
{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *txtPath = [documentsDirectory stringByAppendingPathComponent:@"/DemoApp.sqlite"];

NSURL *newUrl = [[NSURL alloc] initWithString:
[txtPath stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];

NSData *sqliteData = [[NSData alloc] initWithContentsOfURL:newUrl];

//send sqliteData to email composer delegate to attach it as attachment
[self showPicker:sqliteData];

}

如何在不将其转换为 NSData 的情况下通过电子邮件发送 sqlite db?

4

1 回答 1

2

在创建提供路径而不是 url 的 NSData 对象时使用 dataWithContentsOfFile。例如:

NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"Pubs" ofType:@"db"];
NSData   *myData = [NSData dataWithContentsOfFile:dbPath];


[mailComposeVC addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:@"Pubs.db"];
于 2012-09-28T13:27:39.767 回答