前言:
開發移動應用時,請求網絡資源是再常見不過的功能。如果每次都去請求,不但浪費時間,用戶體驗也會變差,所以移動應用都會做離線緩存處理,其中已圖片緩存最為常見。
但是時間長了,離線緩存會占用大量的手機空間,所以清除緩存功能基本是移動應用開發的標配。
實現:
本文介紹在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