从URLSession.shared.dataTask获取当前进度

时间:2019-03-01 13:40:08

标签: ios swift urlsession nsurlsessiondatatask

我需要获取GET请求的数据任务的当前进度(接收的字节数和总字节数),以便从该数据中获取进度加载指示器。

2 个答案:

答案 0 :(得分:-1)

添加URLSessionDownloadDelegate,并使用委托创建URLSession

URLSession(configuration: configuration, delegate: self, delegateQueue: nil)

func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {

    _progress = Float(totalBytesWritten) / Float(totalBytesExpectedToWrite)
}

答案 1 :(得分:-2)

共有三种类型的会话任务。这是从Apple网站link复制的。

  1. 数据任务使用NSData对象发送和接收数据。数据任务旨在用于对服务器的简短且通常是交互式的请求。
  2. 上传任务类似于数据任务,但是它们还发送数据(通常以文件的形式),并在应用程序未运行时支持后台上传。
  3. 下载任务以文件形式检索数据,并在应用程序未运行时支持后台下载和上传。

您应该使用 download 任务而不是 data 任务,因为它的委托方法将使您可以跟踪下载进度。 Here是指向调用您所要内容的下载委托方法的链接。