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に変換せずにsqlitedbを電子メールで送信するにはどうすればよいですか?

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 に答える