Ios 将图像加载到UICollectionView和缓存问题

Ios 将图像加载到UICollectionView和缓存问题,ios,swift,caching,uicollectionview,Ios,Swift,Caching,Uicollectionview,我已经用API中的图像填充了collectionView并缓存了它。 它可以工作,但在最初加载图像时会出现问题。imageView占用collectionView缓存中其他一些图像的时间只有几分之一秒,但它是可检测的,看起来很奇怪 相反,我想让它一直空着,直到它加载 AF.request(imageurlstring).responseImage { response in if case .success(let image) = response.result {

我已经用API中的图像填充了collectionView并缓存了它。 它可以工作,但在最初加载图像时会出现问题。imageView占用collectionView缓存中其他一些图像的时间只有几分之一秒,但它是可检测的,看起来很奇怪 相反,我想让它一直空着,直到它加载

AF.request(imageurlstring).responseImage { response in

            if case .success(let image) = response.result {
                self.image = image
                imageChache.setObject(image, forKey: NSString(string: urlString))
            }
        }

在设置任何新图像之前,请将图像设置为零。因此,在下一行之前添加self.image=nil:

self.image=image

之所以会发生这种情况,是因为集合视图重用了单元格,并且图像下载请求正在排队。这就是为什么有些细胞会有这种多重图像设置。 为了避免多重设置,您可以将图像的url保存在单元格中的某个位置。并检查它是否与响应的url匹配

 cellImageURL = imageurlstring 
 AF.request(imageurlstring).responseImage { response in

       if case  .success(let image) = response.result
          if cellImageURL == response.request.url {
             self.image = image
          }
          imageChache.setObject(image, forKey: NSString(string: urlString))
       }
 }

您是否尝试过将imageview的图像设置为
nil
或集合视图单元格类的
prepareforeuse
方法中的占位符。是的@TonyNguyen,我尝试过。它确实在一定程度上减少了问题,但有时仍然显示出相同的问题。它有自己的问题。现在,除非我向下滚动,然后向上滚动,否则单元格不会刷新。