问题描述
当我点击一个单元格以下载音频文件时,我有一个运行良好的应用程序,但是如果我点击一个单元格,请尝试向上或向下滚动以完成下载,否则它将崩溃!
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
}
}
解决方法
看起来好像是您的附加图像,selectedCellIndex是一个可选变量。 因此,在使用此功能之前,您需要检查它是否为零,然后应去除外力以免发生此类崩溃
DispatchQueue.main.async {
if self.selectedCellIndex != nil{
if let cell = self.audioTableView.cellForRow(at: self.selectedCellIndex) as? AudioTableViewCell{
cell.progressV.progress = percentege
}
}
}
,
首先,应避免强行打开包装,请尝试使用警卫声明。
谈论崩溃,看看是否要更新selectedCellIndex并在任何地方调用相同的下载任务。我怀疑selectedCellIndex设置为某些意外值。