搜索
您的当前位置:首页正文

iOS开发中使用YYCache进行数据缓存

来源:知库网

需求:

某一个列表的数据,当有网络的情况下显示数据,当没有网络的情况下同样能显示数据。

需求分析以及实现功能:

如果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]; // 移除所有缓存
Top