Сбой приложения при нажатии на ячейку для загрузки файла и прокрутке таблицы вверх или вниз

#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 имеет значение, которое не ожидается.