需求:
某一个列表的数据,当有网络的情况下显示数据,当没有网络的情况下同样能显示数据。
需求分析以及实现功能:
如果App首次启动就没有网络没有从没从网络上获取过数据,那么当没网络的情况下是无法显示数据的,所以需求并不是很严谨。应该是列表中之前显示过数据,某一次再显示这个列表中数据的时候无网络了,这个时候同样需要显示数据。
这个时候我们需要用到缓存,将之前从网络上获取的数据缓存到本地(持续存储),以备下次无网络的时候显示缓存数据。
使用YYCache进行数据的缓存
我们选择使用YYCache进行数据的缓存。
每次网络请求成功之后我们都会将最新的数据进行存储,看代码:
YYCache *cache = [YYCache cacheWithName:@"ResponseCache"];
if ([cache containsObjectForKey:url] && networkErrow) { // 如果有缓存且网络有问题
id response = [cache objectForKey:url];
success(response);
return;
}
[[MNNetworkTool shareService] GET:url parameters:param progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (mnnetSet.saveCache) { // 如果需要缓存,进行缓存
[cache setObject:dic forKey:url];
}
success(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
failed();
}];
清除缓存:
YYCache *cache = [YYCache cacheWithName:@"ResponseCache"];
[cache removeAllObjects]; // 移除所有缓存
下面给大家一个YYCache使用的简单demo***https://gitee.com/liangsenliangsen/the_simple_use_of_yycache.git
作者:梁森的简书
链接:https://www.jianshu.com/p/b844bfc173a8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。