下面给出的代码适用于iOS 6,但它在iOS 7上不起作用。
NSCachedURLResponse cachedURLResponse = [[NSCachedURLResponse alloc] initWithResponse:response data:data userInfo:nil storagePolicy:NSURLCacheStorageAllowed];
[[NSURLCache sharedURLCache] storeCachedResponse:cachedURLResponse forRequest:request];
NSLog(@"Cached response is %@", [[NSURLCache sharedURLCache] cachedResponseForRequest:request]);
在iOS 6中,我获得了缓存的响应数据,但在iOS 7中,它返回null。 我使用以下方法在App委托中设置了NSURLCache对象:
NSURLCache *urlCache = [[NSURLCache alloc] initWithMemoryCapacity:2 * 1024 * 1024
diskCapacity:2 * 1024 * 1024
diskPath:nil];
[NSURLCache setSharedURLCache:urlCache];
缓存无法在iOS 7中运行的原因是什么?
答案 0 :(得分:1)
缓存机制依赖于HTTP标头。如果首先允许缓存,请检查返回的HTTP标头。您可以使用像'Charles'这样的网络代理来完成。
答案 1 :(得分:0)
我正在使用POST方法并使用所需的NSData设置http_body。 在iOS 6中,响应被缓存,但这在iOS 7中无效。
所以,现在我们不是设置http_body,而是在URL中附加param并发出请求,缓存现在正在运行。