如何清除由SDWebImage加载的所有缓存图像?

31

我使用SDWebImage在我的应用程序中加载所有图像。下载和缓存都很好,但我想制作一个按钮,可以清除整个应用程序中缓存的所有图像。

我在选项卡栏视图中设置了一个名为“Clear Cache”的UIButton。当点击这个按钮时,如何使所有缓存的图像被删除并需要重新下载?

使用Swift语言实现。

谢谢!

5个回答

68

如果您想完全清除缓存,请执行以下操作:

Obj-c:

- (IBAction)clearCache:(id)sender {
    [[SDImageCache sharedImageCache]clearMemory];
    [[SDImageCache sharedImageCache]clearDisk];
}

Swift 5

SDImageCache.shared.clearMemory()
SDImageCache.shared.clearDisk()

Swift 3.0

@IBAction func clearCache(sender: UIButton) {
    SDImageCache.shared().clearMemory()
    SDImageCache.shared().clearDisk()
}

谢谢您的回复。我应该如何将它与UIButton连接起来呢?是通过outlet吗? - Miles
会尝试这个。谢谢! - Miles
SDWebimage库是否可以自动管理从缓存中删除图像?如果我们已经2到3天甚至更长时间没有再使用它们了。 - Gautam Sareriya
1
请注意,clearDisk已更改为clearDiskOnCompletion:。 - tounaobun
@tounaobun 声明是 func clearDisk(onCompletion completion: SDWebImageNoParamsBlock? = nil),所以 onCompletion 参数可以省略。 - alobaili

2
试试这个:
@IBAction func actClearCache(sender:AnyObject) {

   let objCache = SDImageCache.sharedImageCache()
   objCache.clearMemory()
   objCache.cleanDisk()

}

感谢您的回复。我如何将它与UIButton连接起来?需要通过outlet吗? - Miles
你有导入“SDWebImage”吗?你正在使用哪个Swift版本? - Bista
我导入了SDWebImage,并且我认为我正在使用Swift 2.2。 - Miles
我在与视图控制器相关联的.swift文件中没有写"import SDWebImage"。现在它可以工作了,因为我已经写上了! - Miles
截至目前,SDImageCache.h 中缺少 cleanDisk 和 clearDisk。但它们仍然在 http://cocoadocs.org/docsets/SDWebImage/3.3/Classes/SDImageCache.html#//api/name/clearDisk 上。 - Bob Lissner
显示剩余2条评论

2

删除缓存中的所有数据

SDImageCache.shared.clear(with: .all) {
    print("Disk & memory data cleared")
}

从内存中仅删除数据

SDImageCache.shared.clear(with: .memory) {
    print("Memory data cleared")
}

从磁盘中删除数据。
SDImageCache.shared.clear(with: .disk) {
    print("Disk data cleared")
}

1

Swift 4.2,Xcode 10

使用以下代码添加 'SDWebImage' 库:

pod 'SDWebImage', '5.0.0-beta3'

import SDWebImage

 @IBAction func ClearCacheButtonClick(_ sender: UIButton) {
     SDImageCache.shared.clearMemory()
     SDImageCache.shared.clearDisk()
 }

0

Swift 5

import SDWebImage

  SDImageCache.shared.clearMemory()

  SDImageCache.shared.clearDisk()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接