我正在使用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 copy files to app documents
Data syncing with DropBox API and iOS
请帮助我。
答案 0 :(得分: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
放在后台线程中。