永続データストレージにコアデータを使用するiOSアプリがあります。ユーザーが永続ストアファイル(appname.sqlite)のバックアップを実行する方法としてDropboxを統合しました。
UIButtonはメソッドを呼び出して、ファイルがDropboxにすでに存在するかどうかを確認します。
if([[DBSession sharedSession]isLinked])
{
NSString *folderName = [[self.dateFormatter stringFromDate:[NSDate date]] stringByReplacingOccurrencesOfString:@"/" withString:@"-"];
NSString *destinationPath = [NSString stringWithFormat:@"/GradeBook Pro/Backup/%@/",folderName];
self.metadataIndex = METADATA_REQUEST_BACKUP;
[self.restClient loadMetadata:destinationPath];
}
ロードされたMetadataデリゲートメソッドは、既存のファイルのリビジョン番号(存在する場合)を使用してアップロードを開始します。
-(void) restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata
{
SAVE_CORE_DATA;
NSString *folderName = [[self.dateFormatter stringFromDate:[NSDate date]] stringByReplacingOccurrencesOfString:@"/" withString:@"-"];
NSString *documentsDirectory = DOCUMENTS_DIRECTORY;
NSString *sourcePath = [NSString stringWithFormat:@"%@/GradeBookPro.sqlite", documentsDirectory];
NSString *destinationPath = [NSString stringWithFormat:@"/GradeBook Pro/Backup/%@/",folderName];
[self.restClient uploadFile:@"GradeBookPro.sqlite" toPath:destinationPath withParentRev:[[metadata.contents lastObject]rev] fromPath:sourcePath];
}
これは、完全なネットワーク接続を介した適度に小さいファイルまたは大きいファイルに対してはうまく機能しますが、アップロード中に小さなエラーが発生すると、プロセス全体がキャンセルされます。チャンクアップロードメソッドの使用に切り替えたいのですが、.sqliteファイルの「チャンク」を実際に実行する方法がわかりません。
学習できるチャンクアップロードを使用しているサンプルアプリが見つからないようです。ドキュメントには、ファイルをチャンクで提供するように記載されているだけです。
だから、私の質問は次のとおりです。
チャンクアップロードは、むらのあるネットワーク接続を介して大きなファイルをアップロードする際のユーザーの問題に対処するための正しいアプローチですか?
ファイルを「チャンク」するためのサンプルコード/アプリ/ドキュメントを教えてもらえますか?私はDropboxSDKにかなり慣れています。
ありがとう!