利用NSCache 和 沙盒文件存储 进行 app当中的数据缓存


     在iOS 的数据存储类中,NSCache 和 NSDictionary 类很像,都是通过key值寻找其对应的值。不同的是,在内存不足时,NSCache 会自动释放。
     在很多的app中,要求数据缓存,或者是图片进行缓存,如果直接在沙盒文件当中读取,会出现app前端出现卡顿的现象。
     所以,可以利用NSCache和文件结合的方式,先将文件当中的数据读取到NSCache类当中,前台加载时可以读取NSCache类,如果NSCache 中没有相应的数据,则再从文件当中读取。
     
功能:
     1、在没有进行网络连接或者是在没有网络数据获取时,首先加载app中存储的数据和图片。
      2、缓存数据的存储为:获取数据——>存放到NSCache——>写入到文件当中 ,为了不阻碍主线程的运行,文件存储在子线程当中
     3、缓存数据的读取为:判断NSCache 中是否有缓存数据——>(若没有缓存数据)读取文件当中的数据

 使用方式:
     类文件为 CacheModel类,点此下载
 

目前可以使用的方法共有3个

/*
    单例模式
*/
+ (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])




你可能感兴趣的:(IOS)