鉴于此代码
class TableviewCellView: UITableViewCell {
@IBOutlet var imgView: UIImageView!
func set(model: CellDataModel){
}
}
protocol CellDataModel {
var placeholder: UIImage? { get }
func loadImage(completion: @escaping (Result<UIImage, Error>) -> Void)
}
如何正确处理将图像加载到单元格?就像当用户快速滚动 tableview
我的基本代码是这样的,但是当 tableviewCell 回收并加载错误的图像时单元测试仍然失败
class TableviewCellView: UITableViewCell {
@IBOutlet var imgView: UIImageView!
override prepareForReuse() {
imgView.image = nil
}
func set(model: CellDataModel){
model.loadImage { [weak self] result in
case .success(let image):
DispatchQueue.main.async {
self?.imgView.image = image
}
case .failure(let error):
DispatchQueue.main.async {
self?.imgView.image = model.placeholder
}
}
}
}
protocol CellDataModel {
var placeholder: UIImage? { get }
func loadImage(completion: @escaping (Result<UIImage, Error>) -> Void)
}
我知道像这个tutorial一样在回收时应该取消加载图像功能但是由于给定代码的限制,我不太确定如何取消它