Получить текущий прогресс от URLSession.shared.dataTask - PullRequest
0 голосов
/ 01 марта 2019

Мне нужно получить текущий прогресс (получено и общее количество байтов) задачи данных для запроса GET, чтобы сделать индикатор загрузки прогресса из этих данных.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Существует три типа сессионных заданий.Это скопировано с веб-сайта Apple ссылка .

  1. Задачи данных отправляют и получают данные с использованием объектов NSData.Задачи с данными предназначены для коротких, часто интерактивных запросов к серверу.
  2. Задачи загрузки аналогичны задачам с данными, но они также отправляют данные (часто в форме файла) и поддерживают фоновые загрузки во время приложения.не работает.
  3. Задачи загрузки извлекают данные в виде файла и поддерживают фоновые загрузки и выгрузки, пока приложение не запущено.

Вам следует использовать загрузка задача вместо data задача, потому что ее методы делегата позволят вам отслеживать ход загрузки. Здесь - это ссылка на методы загрузки делегатов, которые вызывают то, что вы запрашиваете.

0 голосов
/ 01 марта 2019

Добавить 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...