`urlSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:)` 在下载内容时只调用一次使用
Posted
技术标签:
【中文标题】`urlSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:)` 在下载内容时只调用一次使用 Alamofire【英文标题】:`urlSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:)` is called only once when downloading something use Alamofire 【发布时间】:2019-05-20 12:37:16 【问题描述】:我使用alamofire实现下载功能。下载进度总是0,下载完成后变成1。所以我调试代码,我发现SessionDelegate(跟随URLSessionDownloadDelegate)的函数urlSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:)
只在下载完成时调用了一次。不知道为什么,谁能告诉我?
我在iphoneXr(ios 12.2)、iphoneXs(iOS 12.2)、模拟器iphone7(iOS 12.1)中试过,这些设备都有这个现象。模拟器iphoneX(iOS 12.2)正常,调用函数正确。
【问题讨论】:
【参考方案1】:除非服务器以Content-Length
标头响应,否则URLSession
(因此Alamofire)无法计算下载进度,因此只会在完成后更新。此外,如果下载量很小且下载速度很快,您可能看不到任何进度更新。
【讨论】:
以上是关于`urlSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:)` 在下载内容时只调用一次使用的主要内容,如果未能解决你的问题,请参考以下文章
我需要将 urlsession 数据任务放在另一个 DispatchQueue 上还是自动完成?
Swift:使用 URLSession 的“表达式类型不明确,没有更多上下文”
swift URLSessionの拡张(URLSession#synchronousDataTask,URLSession #retryDataTask)ref:http://qiita.com/to