【问题标题】:How to clear all cached images loaded from SDWebImage?如何清除从 SDWebImage 加载的所有缓存图像?
【发布时间】:2017-02-14 08:19:54
【问题描述】:

我已通过 SDWebImage 将所有图像加载到我的应用程序中。下载和缓存效果很好,但是我想做一个按钮,可以清除整个应用程序中所有缓存的图像。

我的一个标签栏视图上有一个“清除缓存”按钮作为 UIButton。我怎样才能做到这一点,当点击此按钮时,所有缓存的图像都会被删除并需要重新下载?

使用 Swift。

谢谢!

【问题讨论】:

    标签: ios swift caching sdwebimage


    【解决方案1】:

    如果要彻底清除缓存,请执行以下操作:

    对象-c:

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

    斯威夫特 5

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

    斯威夫特 3.0

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

    【讨论】:

    • 感谢您的回复。我如何将它链接到 UIButton?会通过插座吗?
    • 会试试这个。谢谢!
    • SDWebimage 库是否管理自动从缓存中删除图像?如果我们在 2 到 3 天或更长时间内不再使用。
    • 仅供参考,clearDisk 已更改为 clearDiskOnCompletion:.
    • @tounaobun 声明为func clearDisk(onCompletion completion: SDWebImageNoParamsBlock? = nil),所以onCompletion参数可以省略。
    【解决方案2】:

    试试这个:

    @IBAction func actClearCache(sender:AnyObject) {
    
       let objCache = SDImageCache.sharedImageCache()
       objCache.clearMemory()
       objCache.cleanDisk()
    
    }
    

    【讨论】:

    • 感谢您的回复。如何将其链接到 UIButton?会通过插座吗?
    • 知道了,谢谢!我收到一条错误消息:使用未解析的标识符“SDImageCache”。我需要在我的桥接头中导入它吗?
    • 你有“导入SDWebImage”吗?您使用的是哪个 swift 版本?
    • 这是我的桥接头:#import "SDWebImage/UIImageView+WebCache.h" #import "SDWebImane" 它说找不到'SdWebImane'文件
    • 我导入了 SDWebImage,我想我使用的是 Swift 2.2
    【解决方案3】:

    Swift 4.2,Xcode 10

    pod 'SDWebImage', '5.0.0-beta3'

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

    【讨论】:

      【解决方案4】:

      从缓存中删除所有数据

      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")
      }
      

      【讨论】:

        【解决方案5】:

        斯威夫特 5

        import SDWebImage
        
          SDImageCache.shared.clearMemory()
        
          SDImageCache.shared.clearDisk()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-15
          • 1970-01-01
          • 2017-09-18
          • 1970-01-01
          • 2017-09-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多