Хорошо, я просмотрел Отображение хода загрузки в повторно используемых ячейках, но столкнулся с проблема с использованием сеанса URL для отслеживания хода загрузки в ячейках таблицы после перезагрузки таблицы:
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
if totalBytesExpectedToWrite > 0 {
let progress = Float(Double(totalBytesWritten) / Double(totalBytesExpectedToWrite))
itemsDownloadingNow[(downloadTask.originalRequest?.url)!] = progress
//update
for (i, prog) in itemsDownloadingNow
{
if(i.lastPathComponent == episode?.enclosure?.url.lastPathComponent)
{
//is downloading
circleProgress?.percentage = prog
}
}
}
}
Это то, что я пробовал до сих пор (это в классе TableViewCell), сохраняя ход выполнения каждой задачи по URL-адресу в глобальном словаре: var itemsDownloadingNow = [URL: Float]()
Это работает, если таблица НЕ перезагружается (ячейки перемешиваются), но ПОСЛЕ перезагрузки круговой прогресс возвращается к нулю/не отслеживается. Я не знаю, как это правильно сделать, и единственный способ постоянно обновлять круг — поместить его в эту функцию сеанса URL.
Как я могу отслеживать ход загрузки для каждой ячейки?