【发布时间】:2014-08-23 12:52:03
【问题描述】:
我试图用NSURLSession 替换NSURLConnection,但我发现使用NSURLSession 我无法像在NSURLConnection 中那样使用委托方法读取中间数据块。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
我曾经在完成之前开始使用数据。我有点流媒体。如何在NSURLSession 完成之前访问下载的数据?
我注意到有一个(NSURL *)location 是在完成之前从NSURLSession 临时保存的数据位置,但是我可以在完成之前获得这个 URL 吗?
谢谢
按照 Rob 的建议进行了尝试:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
NSURLSessionTask *task = [session dataTaskWithRequest:request];
[task resume];
但是,只调用了 didRecieveResponse
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler
但没有调用 didReceiveData。
我尝试将任务更改为downloadTask
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate:self delegateQueue: [NSOperationQueue mainQueue]];
NSURLSessionDownloadTask * downloadTask =[defaultSession downloadTaskWithRequest:request];
[downloadTask resume];
它适用于下载委托,但未调用数据委托 (didReceiveData)。
谁能告诉我我做错了什么?
【问题讨论】:
标签: ios nsurlsession nsurlsessiondownloadtask