YTKNetwork
YTKNetwork copied to clipboard
获取到上次缓存之后,并不会请求数据。
在我们实际的测试中发现设置cacheTimeInSeconds确实能起到缓存的作用,但是在缓存有效期内,加载缓存之后并不会请求数据。这与文档中"关于显示上次请求数据"章节所描述的不一致,虽然成功的回调会被调用。 望查验。
『显示上次请求数据』 指的是先直接调用 -loadCacheWithError 直接读取数据,解析后并显示,然后再调用 -startWith... 方法正常发起请求。
// 1. 创建 api request
NSString *userId = @"1";
GetUserInfoApi *api = [[GetUserInfoApi alloc] initWithUserId:userId];
// 2. 加载缓存
if ([api loadCacheWithError:nil]) {
NSDictionary *json = [api responseJSONObject];
NSLog(@"json = %@", json);
// show cached data
}
api.animatingText = @"正在加载";
api.animatingView = self.view;
// 3. 发起请求
[api startWithCompletionBlockWithSuccess:^(YTKBaseRequest *request) {
NSLog(@"update ui");
} failure:^(YTKBaseRequest *request) {
NSLog(@"failed");
}];
这里的缓存数据显示和网络请求是两件独立的事,不知道你的需求是什么样的?
cacheTimeInSeconds 只在检查缓存有效性时才会用到,代表的是缓存的有效时长。只有在这个值大于或者等于 0 时, YTKRequest 才会缓存接口返回的数据。
另外,YTKRequest 有一个 ignoreCache 属性,设为 YES 可以使得在网络请求时不读取缓存,默认是 NO。如果你只需要在第一次请求时加载缓存数据,把 ignoreCache 属性设为 YES 即可。
@ShannonChenCHN
api.animatingText = @"正在加载";
api.animatingView = self.view;
这段代码哪里来的呀?
@yangzheng006 这是 YTKNetwork 官方的 demo 里面的,只是个示例。
@ShannonChenCHN thx