2016-05-13 29 views
1

Kingfisher只下載並緩存一次圖像,並在每個單元格中使用該圖像,並且不會下載新圖像。我試過使用.ForceRefresh選項,但它不起作用。如何使用Kingfisher庫swift在每個單元格中下載和緩存新圖像?

代碼:

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 
} 
+2

如果您想清除所有內容,您可以使用'KingfisherManager.sharedManager.cache.removeImageForKey(imageURL)'或'KingfisherManager.sharedManager.cache.clearMemoryCache()'和'KingfisherManager.sharedManager.cache.clearDiskCache()'。 – beyowulf

回答

1

與翠鳥玩弄後,我得出的結論是,問題不是在所有關於緩存。 .ForceRefresh工作正常,即使使用單獨的緩存位置也不能解決問題。

我認爲問題在於unsplash處理對其端點"https://source.unsplash.com/random"的請求。由於Kingfisher的所有請求幾乎在同一時間觸發,因此無法將相同的照片發送給您的所有請求(可能是對其最終的優化)。

你可以得到多一點隨機通過發出請求

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

(這可能指的是即將到來的隨機照片麼?),但即使有,我已經注意到,一些照片顯示有時兩次。據我所知,這是最成功的方法。

幸運的是,至少這樣你仍然可以利用翠鳥的緩存。

相關問題