Ios 如何将restclient dropbox API与NSURLSessionDownloadTask一起使用以下载文件

Ios 如何将restclient dropbox API与NSURLSessionDownloadTask一起使用以下载文件,ios,dropbox,nsurlsession,Ios,Dropbox,Nsurlsession,问题:我想从我的dropbox帐户下载一个文件,并使用quick look将其可视化 第一个解决方案: 1) 使用Dropbox API restClient: [[self restClient] loadFile:fullpath intoPath:finalpath]; 2) 下载后,使用QLPreviewController预览文件 这个解决方案的问题是,我不知道如何将下载与预览同步(要使用quick look,文件必须是本地的,所以我需要先下载它) 我提出的(丑陋的)解决方法是设置一

问题:我想从我的dropbox帐户下载一个文件,并使用quick look将其可视化

第一个解决方案:

1) 使用Dropbox API restClient:

[[self restClient] loadFile:fullpath intoPath:finalpath];
2) 下载后,使用QLPreviewController预览文件

这个解决方案的问题是,我不知道如何将下载与预览同步(要使用quick look,文件必须是本地的,所以我需要先下载它)

我提出的(丑陋的)解决方法是设置一个警报(“缓存”),并使其持续任意长度的时间(比如说12秒,神奇数字…)。同时,我暂停执行10-12秒(神奇数字):

[NSThread sleepForTimeInterval:12.0f]

…希望在此时间间隔结束时,文件已下载,以便我可以启动QLViewController

以下是代码(丑陋,我知道……):

它确实可以工作(小文件和快速连接),但它不是最好的解决方案

我认为最好的解决方案是将NSURLSession与dropbox restClient集成,以便使用此例程:

NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration
                                                        delegate:nil
                                                   delegateQueue:[NSOperationQueue mainQueue]];
  NSURLSessionDownloadTask *task;
  task = [session downloadTaskWithRequest:request
                        completionHandler:^(NSURL *localfile, NSURLResponse *response, NSErr or *error) {
/* yes, can do UI things directly because this is called on the main queue */ }];
  [task resume];
但我不确定如何将它与DropBox API结合使用:有什么建议吗

谢谢,
dom

看起来API会告诉您进度和完成情况:

- (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath contentType:(NSString*)contentType metadata:(DBMetadata*)metadata;
- (void)restClient:(DBRestClient*)client loadProgress:(CGFloat)progress forFile:(NSString*)destPath;
无需直接拨打任何睡眠或gcd电话。只需在下载开始时将UI更改为“显示忙碌”,并使用这些更新UI以获得进度和完成

- (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath contentType:(NSString*)contentType metadata:(DBMetadata*)metadata;
- (void)restClient:(DBRestClient*)client loadProgress:(CGFloat)progress forFile:(NSString*)destPath;