NSURLCache不在iOS 7中存储缓存数据

时间:2013-10-24 05:30:42

标签: ios iphone objective-c ios7 nsurlcache

下面给出的代码适用于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中运行的原因是什么?

2 个答案:

答案 0 :(得分:1)

缓存机制依赖于HTTP标头。如果首先允许缓存,请检查返回的HTTP标头。您可以使用像'Charles'这样的网络代理来完成。

答案 1 :(得分:0)

我正在使用POST方法并使用所需的NSData设置http_body。 在iOS 6中,响应被缓存,但这在iOS 7中无效。

所以,现在我们不是设置http_body,而是在URL中附加param并发出请求,缓存现在正在运行。