Наблюдать за прогрессом загрузки данных в 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