NSURLSession dataTaskWithRequest进度跟踪

时间:2015-05-27 22:27:52

标签: objective-c swift cocoa cocoa-touch nsurlsession

我正在使用NSURLSession dataTaskNSOoperationQueue一起下载具有多个连接的文件,以加快速度。从NSURLSession创建操作并将其传递给OperationQueue。现在我在这里的斗争是,正如我在Apple文档中看到的,只有downloadTask有进度跟踪,是否可以使用NSURLSession dataTask跟踪收到的字节数?

3 个答案:

答案 0 :(得分:3)

根据Apple文档https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSessionTaskDelegate_protocol/index.html#//apple_ref/occ/intfm/NSURLSessionTaskDelegate/URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:代表是

- (void)URLSession:(NSURLSession *)session
          task:(NSURLSessionTask *)task
didSendBodyData:(int64_t)bytesSent
totalBytesSent:(int64_t)totalBytesSent
totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend

未调用URLSession(_:dataTask:didReceiveData :), 至少不在ios 9.0上, 否则Stefan的答案适用

答案 1 :(得分:2)

NSURLSession配置为拥有实现NSURLSessionDataDelegate协议的委托。

在委托中,实现URLSession(_:dataTask:didReceiveData:)方法,当数据进入时将调用。这是一个更新的好地方,例如进度条。

答案 2 :(得分:0)

以下是一个示例(Swift4)如何跟踪多个同时执行的下载操作的进度:https://stackoverflow.com/a/45290601/1418981