Swift3.0 清理缓存

最近的烦心事情不少,学习Swift之路就这么慢了下来。10月底,朋友说想要一个可以看嘿嘿的电影的APP。刚好在学Swift,就尝试着用Swift去开发一款。功能已经实现,但由于能力有限,很多东西是用的第三方,如播放功能。昨天写完朋友让给添加一个清除缓存的功能,说图片占的太大,所以只好找找OC的,然后用Swift改。。。

1.找到缓存的路径

let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first
路径结果:/Users/用户名/Library/Developer/CoreSimulator/Devices/C8543F66-393F-4174-A12D-1BD99E1F8141/data/Containers/Data/Application/6DE40038-25AE-4D82-900E-DED0C76DDE50/Library/Caches
如图就是路径的位置了

在Finder中按command+shift+G后粘贴要去的位置即可。

2.计算内存大小


let files = FileManager.default.subpaths(atPath:cachePath)
        // 统计文件夹内所有文件大小
        var total = Int();
        // 快速取出所有文件名
        for p in files!{
            // 把文件拼接到路径中
            let path = cachePath.appendingFormat("/\(p)")
            // 取出文件属性
            let floder = try! FileManager.default.attributesOfItem(atPath: path)
            // 用元组取出文件大小属性
            for (abc,bcd) in floder {
                // 只去出文件大小进行拼接
                if abc == FileAttributeKey.size{
                    total += (bcd as AnyObject).integerValue
                }
            }
        }
        let message = "\(total/(1000*1000))M缓存"

3.清除缓存

 let files = FileManager.default.subpaths(atPath:cachePath)
        let alert = UIAlertController(title: "清除缓存", message: nil, preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "确定", style: UIAlertActionStyle.default) { (alertConfirm) -> Void in
            // 点击确定->删除
            for p in files!{
                // 拼接路径
                let path = self.cachePath.appendingFormat("/\(p)")
                // 判断是否可以删除
                if(FileManager.default.fileExists(atPath: path)){
                    // 删除
                    try! FileManager.default.removeItem(atPath: path)
                }
            }
        })
        alert.addAction(UIAlertAction(title: "取消", style: UIAlertActionStyle.cancel) { (cancle) -> Void in
            print("用户点击取消")
            })
        // 弹出提示框
       present(alert, animated: true, completion: nil)      

以上放进一个button的方法里即可。

你可能感兴趣的:(Swift3.0 清理缓存)