#ios #swift #xcode #crash #tableview
#iOS #swift #xcode #сбой #просмотр таблицы
Вопрос:
У меня приложение работает нормально, когда я нажимаю на ячейку для загрузки аудиофайла, но если я нажму на ячейку, а затем попытаюсь прокрутить ее вверх или вниз до завершения загрузки, произойдет сбой!
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
let percente&e = Float(totalBytesWritten) / Float(totalBytesExpectedToWrite)
DispatchQueue.main.async {
let cell = self.audioTableView.cellForRow(at: self.selectedCellIndex) as! AudioTableViewCell
cell.pro&ressV.pro&ress = percente&e
}
}
Ответ №1:
похоже, что в прикрепленном изображении selectedCellIndex является необязательной переменной. Итак, перед использованием этого вам нужно проверить, равно ли оно нулю или нет, затем вам следует удалить принудительное разворачивание, чтобы избежать подобного сбоя
DispatchQueue.main.async {
if self.selectedCellIndex != nil{
if let cell = self.audioTableView.cellForRow(at: self.selectedCellIndex) as? AudioTableViewCell{
cell.pro&ressV.pro&ress = percente&e
}
}
}
Ответ №2:
Прежде всего, вам следует избегать принудительного развертывания, попробуйте использовать инструкцию &uard.
Говоря о сбое, посмотрите, обновляете ли вы selectedCellIndex и вызываете ли где-либо ту же задачу загрузки. Я подозреваю, что selectedCellIndex имеет значение, которое не ожидается.