首页 > 解决方案 > 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

我希望有一个解决方法。

标签: swiftsdwebimage

解决方案


你应该知道如何SDWebImage实现他们的sd_setImage方法。在方法的开头,sd_cancelImageLoadOperationWithKey调用以取消当前请求并使用新 url 开始请求。

在此处输入图像描述

在您的情况下,我猜会记录错误,因为单元格被重复使用。

当一个单元格显示在屏幕上时,它会使用sd_setImage. 在此请求完成之前,您滚动并让此单元格移出屏幕。此时,您继续滚动并重复使用单元格。sd_setImage在当前请求未完成时,在此单元格上再次使用另一个 url 调用。正如我上面所说,sd_setImage在开始新请求之前取消当前请求。

cancelled错误被记录,因为在方法sd_cancelImageLoadOperationWithKey的开头被调用sd_setImage

在这种情况下,您不应该关心cancelled错误。您的代码运行正确。


推荐阅读