Swift: отображать ход загрузки для разных ячеек таблицы?

Хорошо, я просмотрел Отображение хода загрузки в повторно используемых ячейках, но столкнулся с проблема с использованием сеанса 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.

Как я могу отслеживать ход загрузки для каждой ячейки?


person skyguy    schedule 09.06.2018    source источник
comment
Сохраните переменную в словаре с другими данными, которые используются для заполнения tableView. Когда таблица перезагружается, значение индикатора выполнения должно быть тем значением, которое сохраняется при обновлении хода выполнения в ячейке, сохраняет его статус выполнения в словаре или массиве в соответствии с вашими требованиями и при перезагрузке использовать созданный массив или словарь   -  person iOS Geek    schedule 09.06.2018
comment
Простым решением было бы создать класс модели для источника данных tableview и сохранять ход загрузки каждый раз, когда прогресс обновляется из API в соответствующей модели. Теперь вам нужно просто установить этот прогресс в circleProgress?.percentage в вашем случае.   -  person Dhaval H. Nena    schedule 09.06.2018