swift - iOS Swift:SDWebImage 图像加载错误
问题描述
我正在使用 SDWebImage 将图像加载到分页的水平集合视图中。某些图像未加载并给出错误“已取消”。
这是我声明单元格的方式:
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PHOTOS_CELL_ID, for: indexPath) as! PhotosCell
这是我将图像加载到单元格的图像视图中的方式:
cell.photoImgV.sd_setImage(with: URL(string:photo[Constants.PHOTO_URL] as! String), placeholderImage: nil, options: SDWebImageOptions(rawValue: 0), completed: { (img, err, cacheType, imgURL) in
if err != nil{
print("ERROR LOADING IMAGE: \(err?.localizedDescription ?? "ERRRRoR")")
}
// prints: ERROR LOADING IMAGE: cancelled
我希望有一个解决方法。
解决方案
你应该知道如何SDWebImage
实现他们的sd_setImage方法。在方法的开头,sd_cancelImageLoadOperationWithKey
调用以取消当前请求并使用新 url 开始请求。
在您的情况下,我猜会记录错误,因为单元格被重复使用。
当一个单元格显示在屏幕上时,它会使用sd_setImage
. 在此请求完成之前,您滚动并让此单元格移出屏幕。此时,您继续滚动并重复使用单元格。sd_setImage
在当前请求未完成时,在此单元格上再次使用另一个 url 调用。正如我上面所说,sd_setImage
在开始新请求之前取消当前请求。
cancelled
错误被记录,因为在方法sd_cancelImageLoadOperationWithKey
的开头被调用sd_setImage
。
在这种情况下,您不应该关心cancelled
错误。您的代码运行正确。
推荐阅读
- arrays - 在聚合 MongoDB 中计数
- css - CSS Grid 与 material-ui 反应
- svelte - Svelte 在构建文件夹中包含动态导入的组件
- android - 为什么当我创建所有方法时菜单选项没有点击?
- uwp - 禁用 UWP 社区工具包扩展器的扩展
- c# - 服务中的 EPPlus 库
- wordpress - WooCommerce 预付款计算错误
- java - Android Studio 调试调用方法
- apache-kafka - 在 Windows 上的 kafka 上获取 java.nio.file.AccessDeniedException
- mysql - 设置数字列的范围