はじめに
画像キャッシュライブラリとして広く利用されているSDWebImageですが、
キャッシュをクリアする際のメソッドとして主に以下のメソッドを利用するシーンが多いと思います。
SDImageCache.sharedImageCache().clearMemory()
SDImageCache.sharedImageCache().clearDisk()
しかし特定のUIImageViewのキャッシュをクリアしたい場合には、
いちいちすべてのキャッシュをクリアしてしまうのはコストが高いので、
特定のUIImageViewのキャッシュクリアの方法を調べてみました。
特定のUIImageViewのキャッシュクリア
以下のメソッドを利用することで実現できます。
SDImageCache.shared.removeImageFromDisk(forKey: String)
SDImageCache.shared.removeImageFromDisk(forKey: String)
引数のforKey
(cacheKey)とは、そのUIImageViewにセットされているURLのようです。
▼公式ドキュメント
The cache key is an application unique identifier for the image to cache.
It is generally the absolute URL of the image.
generally
が若干気になりますが笑(おそらくキャッシュ時にkeyを指定できるから?)
以下の通り実装することでキャッシュクリアできました。
if let cacheKey = uiimageView.sd_imageURL?.absoluteString {
SDImageCache.shared.removeImageFromDisk(forKey: cacheKey)
SDImageCache.shared.removeImageFromDisk(forKey: cacheKey)
}