在iOS 的数据存储类中,NSCache 和 NSDictionary 类很像,都是通过key值寻找其对应的值。不同的是,在内存不足时,NSCache 会自动释放。
在很多的app中,要求数据缓存,或者是图片进行缓存,如果直接在沙盒文件当中读取,会出现app前端出现卡顿的现象。
所以,可以利用NSCache和文件结合的方式,先将文件当中的数据读取到NSCache类当中,前台加载时可以读取NSCache类,如果NSCache 中没有相应的数据,则再从文件当中读取。
功能:
1、在没有进行网络连接或者是在没有网络数据获取时,首先加载app中存储的数据和图片。
2、缓存数据的存储为:获取数据——>存放到NSCache——>写入到文件当中 ,为了不阻碍主线程的运行,文件存储在子线程当中
3、缓存数据的读取为:判断NSCache 中是否有缓存数据——>(若没有缓存数据)读取文件当中的数据
使用方式:
类文件为
CacheModel类,点此下载
目前可以使用的方法共有3个
读取数据时的使用方式
- (id)readInfoFromCacheByKey:(NSString *)Key Type:(NSString *)type;
Key: 表示在cache当中存放的Key值
Type: 表示需要缓存数据返回的类型,目前可以返回NSString、NSArray及NSDictionary三种类型
举例:
数据写入时的使用方式
type 为content 的类型,如果content类型为NSDictionary,则type为NSStringFromClass([NSDictionary class])
/*
单例模式
*/
+ (CacheModel *)sharedWithCacheModel;
/*
从NSCache读写数据
*/
- (id)readInfoFromCacheByKey:(NSString *)Key Type:(NSString *)type;
- (void)writeInfoToCacheByKey:(NSString *)Key Type:(NSString *)type Content:(id)content;
读取数据时的使用方式
- (id)readInfoFromCacheByKey:(NSString *)Key Type:(NSString *)type;
Key: 表示在cache当中存放的Key值
Type: 表示需要缓存数据返回的类型,目前可以返回NSString、NSArray及NSDictionary三种类型
举例:
NSDictionary *info = [[CacheModel sharedWithCacheModel] readInfoFromCacheByKey:CacheFileName Type:NSStringFromClass([NSDictionary class])];
表示是查找 CacheFileName 为key值,以NSDictionary类型返回 的数据
数据写入时的使用方式
- (void)writeInfoToCacheByKey:(NSString *)Key Type:(NSString *)type Content:(id)content;
content:需要写入的内容
type 为content 的类型,如果content类型为NSDictionary,则type为NSStringFromClass([NSDictionary class])