如何使用Kingfisher库swift在每个单元格中下载和缓存新图像?

时间:2016-05-13 19:55:05

标签: ios swift ios9

Kingfisher只下载并缓存图像一次,并在每个单元格中使用相同的图像,而不下载新的图像。我尝试过使用.ForceRefresh选项,但它不起作用。

代码:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! ImageCollectionViewCell

    let imageURL = NSURL(string: "https://source.unsplash.com/random")
    cell.imageView.kf_setImageWithURL(imageURL!)


    return cell
}

1 个答案:

答案 0 :(得分:1)

在玩了翠鸟之后,我得出结论,问题根本不在于缓存。 .ForceRefresh工作正常,即使使用单独的缓存位置也无法解决问题。

我认为问题在于unsplash处理对其"https://source.unsplash.com/random"端点的请求的方式。因为Kingfisher的所有请求几乎同时发出,因此unsplash会为您的所有请求提供相同的照片(可能是他们最终的优化)。

通过向

发出请求,您可以获得更多随机性

NSURL(string: "https://source.unsplash.com/random?page=" + String(indexPath.row))

(也许是指即将推出的随机照片?),但即便如此,我也注意到有些照片有时出现两次。据我所知,这是最成功的方法。

幸运的是,至少通过这种方式你仍然可以利用翠鸟的缓存。