1、前言

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




2、实现

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



2.1、统计缓存文件大小

[Swift] 纯文本查看 复制代码
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.2、删除缓存文件

[Swift] 纯文本查看 复制代码
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、效果图

Swift实现清除缓存功能、统计大小,源代码拷过去直接用!

Swift实现清除缓存功能、统计大小,源代码拷过去直接用! - 敏捷大拇指 - Swift实现清除缓存功能、统计大小,源代码拷过去直接用!





相关内容

第三方类Reachability:用Swift实现检测网络连接状态及网络类型

Swift实现清除缓存功能、统计大小,源代码拷过去直接用!

Swift使用JavaScriptCore与JS交互,让Native和HTML5共舞




作者:马燕龙