iOS开发 - Swift实现清除缓存功能
前言:
开发移动应用时,请求网络资源是再常见不过的功能。如果每次都去请求,不但浪费时间,用户体验也会变差,所以移动应用都会做离线缓存处理,其中已图片缓存最为常见。
但是时间长了,离线缓存会占用大量的手机空间,所以清除缓存功能基本是移动应用开发的标配。
实现:
本文介绍在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.效果图

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma
iOS开发 - Swift实现清除缓存功能的更多相关文章
- iOS清除缓存功能开发
在APP开发中,大量的图片或消息占用系统内存,造成一堆垃圾信息,所以开发清除缓存功能就显得必不可少了. 代码段1:获取文件的大小 - (long long) fileSizeAtPath:(NSStr ...
- Android开发之清除缓存功能实现方法,可以集成在自己的app中,增加一个新功能。
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 Android开发之清除缓存功能实现方法,可以集成在自己的app中,增加一个新功能. 下面是一个效果图 ...
- iOS开发网络篇—数据缓存
iOS开发网络篇—数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造 ...
- iOS开发Swift篇—(三)字符串和数据类型
iOS开发Swift篇—(三)字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容 let website = "http://www ...
- 李洪强iOS开发Swift篇—03_字符串和数据类型
李洪强iOS开发Swift篇—03_字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容 let website = "http:// ...
- Android记录20-获取缓存大小和清除缓存功能
Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓存 ...
- iOS开发Swift篇—(一)简单介绍
iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...
- iOS开发Swift篇—(二)变量和常量
iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...
- iOS开发Swift篇—(四)运算符
iOS开发Swift篇—(四)运算符 一.运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=.-= 算术运算符:+.-.*./ 求余运算符:% 自增.自减运算符: ...
随机推荐
- 有关rip路由协议相关知识以及实例配置【第1部分】
有关rip路由协议相关知识以及实例配置[第一部分] RIP呢,这是一个比较重要的知识点,所以它的知识覆盖面很广泛:但是呢,我将会对碰到的问题进行一些分析解刨(主要是为了帮助自己理清思维):也希望能够从 ...
- mybatis基础学习2---(resultType和resultMap的用法和区别)和setting的用法
1:resultType和resultMap两者只能有一个成立 2:resultMap可以解决复杂查询时的映射问题 3:使用 resultType使用 ------------------------ ...
- 《Machine Learning》系列学习笔记之第二周
第二周 第一部分 Multivariate Linear Regression Multiple Features Note: [7:25 - θT is a 1 by (n+1) matrix an ...
- 移动端高清、多屏适配方案——rem
背景: 开发移动端H5页面 一套设计图 不同尺寸的手机 不同分辨率的手机 方案:使用rem作为单位解决一套设计图适应不同分辨率,不同尺寸的手机. 概念: REM(font size of the ro ...
- Python 使用心得之--变量命名
目前开发命名规范基本都遵循驼峰命名法,如:userName.我也不将这个规范的特性了,大家都明白.接下来进入正题,如何在python中取一个好名字,让你能更好的见名知意呢? 1.元组(Tuple)类型 ...
- js正则表达式详解及示例讲解
所谓正则表达式,简单来说就是一种规则,一种计算机能读懂的规则.js中的正则表达式语法是Perl5(一种很早的编程语言)的正则语法的子集.本文将在基础知识的基础上添加示例帮助快速理解正则表达式. 学习正 ...
- How do you make an awesome team?(来考验一下自己的英语能力吧)
How do you make an awesome team? I was talking to my awesome friend Amy Hanlon (who is a software en ...
- JS+CSS实现的下拉刷新/上拉加载插件
闲来无事,写了一个当下比较常见的下拉刷新/上拉加载的jquery插件,代码记录在这里,有兴趣将代码写成插件与npm包可以留言. 体验地址:http://owenliang.github.io/pull ...
- cent os 直接访问谷歌的脚本实现
https://github.com/DingGuodong/GoogleHostsFileForLinux/blob/master/replaceLocalHostsFileAgainstGfw.s ...
- 【转】译—游戏开发者应该如何应用Git和GitHub
原文地址:http://bbs.9ria.com/thread-259587-1-2.html "我确信Git是强大的,但是它看起来很复杂--我依然会坚持我当前的工作流"就像说&q ...