iOS Swift: SDWebImage 图片加载错误

iOS Swift: SDWebImage Image Loading Error

我正在使用 SDWebImage 将图像加载到分页的水平集合视图中。部分图片未加载并报错 "canceled."

这是我声明单元格的方式:

        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 获取图像的请求。在此请求完成之前,您滚动并使此单元格移出屏幕。此时,你继续滚动,cell 被重用。当前请求未完成时,sd_setImage 与另一个 url 在此单元格上再次调用。正如我上面所说,sd_setImage 在开始新请求之前取消当前请求。

cancelled 记录错误,因为 sd_cancelImageLoadOperationWithKeysd_setImage 方法的开头被调用。

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