1

Dropbox Sync API SDKを使用しています。すべてのフォルダーとファイルが表示されますが、ファイルをダウンロードできません。このコードを使用しています。

  DBFilesystem *filesystem;
  DBFile *file = [_filesystem openFile:info.path error:nil];
   NSData *imagedata=[file readData:nil];
  [fileMan createFileAtPath:Image_filePath  contents:**data** attributes:nil];
  NSLog(@"flao=%d",[file writeData:imagedata error:nil]);
  // it return 1

NSData を取得していますが、ドキュメント ディレクトリに保存できません。以下のリンクを確認しましたが、成功しません

Dropbox Sync API iOS でファイルをアプリ ドキュメントにコピーする

DropBox API および iOS とのデータ同期

私を助けてください。

4

1 に答える 1

1

Dropbox はファイルをキャッシュするのに時間がかかります。キャッシュが完了したときに監視するブロックを設定できます。

__block MyViewController *me = self;
[self.dropboxFile addObserver:self block:^() { [me monitorDropboxFile:@"Sync"]; }];

オブザーバーの内部:

- (void)monitorDropboxFile:(NSString *)caller
{
    if (self.dropboxFile.status.cached) {
        ; // Good to go, the file is cached
    } else {
        ; // download in progress
    }
}

または、より簡単な方法があり、次を使用しますreadHandle

(DBFile *)file;
// ...  
DBError *dbError;
NSFileHandle *fileHandle = [file readHandle:&dbError];

Dropbox API ヘッダーに記載されているとおり:

/** ファイルの読み取り専用ファイル ハンドルを返します。ファイルがキャッシュされていない場合、メソッドはファイルがダウンロードされるまでブロックされます。@return ファイルを読み取ることができる場合、またはエラーが発生した
場合のファイル ハンドル。nil*/

返された時点で、ファイル ハンドルは準備完了です。ただし、readHandleファイルのダウンロード中にアプリが応答する必要がある場合は、バックグラウンド スレッドを配置することをお勧めします。

于 2013-10-31T03:33:03.350 に答える