美文网首页iOS学习包Swift初体验程序员
iOS开发 - Swift实现清除缓存功能

iOS开发 - Swift实现清除缓存功能

作者: 天秤vs永恒 | 来源:发表于2016-04-20 16:59 被阅读1504次

前言:

开发移动应用时,请求网络资源是再常见不过的功能。如果每次都去请求,不但浪费时间,用户体验也会变差,所以移动应用都会做离线缓存处理,其中已图片缓存最为常见。
但是时间长了,离线缓存会占用大量的手机空间,所以清除缓存功能基本是移动应用开发的标配。


实现:

本文介绍在iOS开发中,Swift实现清除缓存功能。主要分为统计缓存文件大小和删除缓存文件两个步骤:

1.统计缓存文件大小

func fileSizeOfCache()-> Int {
    
    // 取出cache文件夹目录 缓存文件都在这个目录下
    let cachePath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true).first
    //缓存目录路径
    print(cachePath)
    
    // 取出文件夹下所有文件数组
    let fileArr = NSFileManager.defaultManager().subpathsAtPath(cachePath!)
    
    //快速枚举出所有文件名 计算文件大小
    var size = 0
    for file in fileArr! {
        
        // 把文件名拼接到路径中
        let path = cachePath?.stringByAppendingString("/\(file)")
        // 取出文件属性
        let floder = try! NSFileManager.defaultManager().attributesOfItemAtPath(path!)
        // 用元组取出文件大小属性
        for (abc, bcd) in floder {
            // 累加文件大小
            if abc == NSFileSize {
                size += bcd.integerValue
            }
        }
    }
    
    let mm = size / 1024 / 1024
    
    return mm
}

2.删除缓存文件

func clearCache() {
    
    // 取出cache文件夹目录 缓存文件都在这个目录下
    let cachePath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true).first
    
    // 取出文件夹下所有文件数组
    let fileArr = NSFileManager.defaultManager().subpathsAtPath(cachePath!)
    
    // 遍历删除
    for file in fileArr! {
        
        let path = cachePath?.stringByAppendingString("/\(file)")
        if NSFileManager.defaultManager().fileExistsAtPath(path!) {
            
            do {
                try NSFileManager.defaultManager().removeItemAtPath(path!)
            } catch {
                
            }
        }
    }
}

3.效果图

清除缓存01.gif

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

相关文章

  • iOS开发 - Swift实现清除缓存功能

    前言: 开发移动应用时,请求网络资源是再常见不过的功能。如果每次都去请求,不但浪费时间,用户体验也会变差,所以移动...

  • iOS清除缓存功能实现

    http://www.cnblogs.com/LynnAIQ/p/6196907.html 别人写的博客链接 需要点击去

  • iOS开发中清除缓存功能的实现

    移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebIm...

  • Android 清除缓存功能实现

    ** APP开发中常有计算缓存大小和清空缓存的功能,此功能很常见,几乎每个应用都能看到,清除缓存功能...

  • ios开发实现画板功能

    ios开发实现画板功能 ios开发实现画板功能

  • Flutter 清除应用缓存

    清除应用缓存是 APP 常用的功能之一。清除缓一般只有 2 个操作: 获取缓存大小 清除缓存数据 本文通过实现一个...

  • iOS清除UIWebView缓存

    使用iOS的webview会自动进行缓存,在开发的时候要记得清除Cookie和缓存。

  • iOS清除缓存功能

    计算单个文件大小 计算目录大小 清除缓存文件 数据存储到iCloud

  • Swift Tip4

    1、iOS 开发textView不能从顶部显示: 2.WKWebView清除缓存: 3.webView设置缓存策略...

  • iOS webview 清除缓存

    使用iOS的UIWebview会自动进行缓存,我们在开发的时候要记得清除Cookie和缓存。 _webView =...

网友评论

  • 罗同学_:需要再加上sd的缓存吗这个
  • iFaithFreedom:我也想学iOS,哈哈。
  • af4e8a35bc89:会有崩溃的情形 报错:
    fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=513 "“Snapshots” couldn’t be removed because you don’t have permission to access it." UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/E5FCBA40-670F-4DD2-90DC-5C8FBFFD4904/Library/Caches/Snapshots, NSUserStringVariant=(
    Remove
    ), NSUnderlyingError=0x158494640 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}:


    我正在查找解决方案,有好的解决方法吗?
    不是谁的李逍遥:@江湖丽日 找到解决办法了吗?
    不是谁的李逍遥:@玉树临风的少年 我也碰到这个问题,兄弟你最好怎么解决的
    玉树临风的少年:@日照江湖美 我也是这个问题,真机调试就第一次安装可以,第二次打开app删除缓存只出现大小,删除失败
  • 国王or乞丐:谢谢了,关注了你,以后向你学习,希望多多指导
  • 国王or乞丐:我打印这个方法里面的值mm,打印出来的是路径
  • 国王or乞丐:兄弟看了你写的真的很好,但是我想问下怎么调用,刚开始玩Swift不是很会玩,可以的话我们联系下,给我说好么?
    国王or乞丐:1030554941
    国王or乞丐:可以加下qq么?我刚才在viewdidload里面调用了,打印的mm,是一个路径,不知道怎么让她成为一个数字展现在cell上,然后给她清楚
    天秤vs永恒:@简单的云 这两个方法可以在工程的任何地方调用

本文标题:iOS开发 - Swift实现清除缓存功能

本文链接:https://www.haomeiwen.com/subject/mtazlttx.html