NSURLSession dataTaskWithRequest 进度跟踪
Posted
技术标签:
【中文标题】NSURLSession dataTaskWithRequest 进度跟踪【英文标题】:NSURLSession dataTaskWithRequest progress tracking 【发布时间】:2015-05-27 22:27:51 【问题描述】:我正在使用NSURLSession
dataTask
和NSOoperationQueue
来下载具有多个连接的文件以获得更快的速度。从NSURLSession
创建操作并将它们传递给OperationQueue
。现在我在这里的挣扎是,正如我在苹果文档中看到的那样,只有downloadTask
有进度跟踪,甚至可以跟踪使用NSURLSession
dataTask
接收到的字节吗?
【问题讨论】:
【参考方案1】:根据 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 的回答适用
【讨论】:
谢谢!对我帮助很大。【参考方案2】:将您的NSURLSession
配置为具有实现NSURLSessionDataDelegate
协议的委托。
在委托中,实现URLSession(_:dataTask:didReceiveData:)
方法,当数据进入时将被调用。这是一个更新进度条的好地方。
【讨论】:
谢谢@StefanArentz,您能否更深入地解释一下我必须如何创建代理?我知道如何配置 NSURLSession 以使用委托,但我不确定如何创建委托本身。谢谢以上是关于NSURLSession dataTaskWithRequest 进度跟踪的主要内容,如果未能解决你的问题,请参考以下文章