Наблюдать за прогрессом загрузки данных в Swift?

Мне нужно кэшировать данные, которые я получаю с удаленного URL-адреса на локальный URL-адрес. Я могу сделать это успешно с:

let dataToCache = try Data(contentsOf: url) try dataToCache.write(to: cacheURL)

Но мне было интересно, есть ли какой-то тип наблюдателя, который я мог бы использовать для отображения прогресса в процессе записи данных?

1 ответ

Решение

Не использовать Data(contentsOf: url) сделать синхронный запрос для URL, которые не являются локальными ресурсами. Вы должны использовать URLSession.Для наблюдения за ходом работы необходимо установить urlsessiondownloaddelegate https://developer.apple.com/documentation/foundation/urlsessiondownloaddelegate и для отслеживания хода выполнения использовать метод

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

https://developer.apple.com/documentation/foundation/urlsessiondownloaddelegate/1409408-urlsession

Другие вопросы по тегам