Ios 点击单元格下载文件并在表格上下滚动时,应用程序崩溃

Ios 点击单元格下载文件并在表格上下滚动时,应用程序崩溃,ios,swift,xcode,crash,tableview,Ios,Swift,Xcode,Crash,Tableview,当我点击手机下载音频文件时,我有一个应用程序工作正常,但如果我点击手机,然后在完成下载之前尝试向上或向下滚动,它将崩溃 func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) { let perc

当我点击手机下载音频文件时,我有一个应用程序工作正常,但如果我点击手机,然后在完成下载之前尝试向上或向下滚动,它将崩溃

func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
    
    let percentege = Float(totalBytesWritten) / Float(totalBytesExpectedToWrite)
    
    DispatchQueue.main.async {
        let cell = self.audioTableView.cellForRow(at: self.selectedCellIndex) as! AudioTableViewCell
        
        cell.progressV.progress = percentege
        
    }
    
}

首先,您应该避免强制展开,尝试使用guard语句


说到崩溃,看看您是否正在更新selectedCellIndex并在任何地方调用相同的下载任务。我怀疑selectedCellIndex设置的值不是预期值。

从您的附加图像来看,selectedCellIndex似乎是一个可选变量。 所以,在使用它之前,你需要检查它是否为零,然后你应该移除力展开,以避免像这样的崩溃

DispatchQueue.main.async {
    if self.selectedCellIndex != nil{
        if let cell = self.audioTableView.cellForRow(at: self.selectedCellIndex) as? AudioTableViewCell{
            cell.progressV.progress = percentege
        }

    }   
}