cachePolicy不起作用,它只是缓存下载的json。
//URLRequest
NSString *url = [NSString stringWithFormat:@"http://www.semhora.com/jsonparser/categories/categories_%d_test.json", _categoriesIndex];
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:url]
cachePolicy:NSURLCacheStorageNotAllowed
timeoutInterval:60.0];
如何在iOS 7中禁止缓存?
答案 0 :(得分:7)
我遇到了同样的问题,我确认设置cachePolicy = 0
而不是cachePolicy = NSURLCacheStorageNotAllowed
可以解决问题。
这对我来说没有意义,因为0对应NSURLCacheStorageAllowed
我们不能将其设置为0,因为Apple可能会在未来的版本中修复此问题
您可以尝试致电:
[NSURLCache sharedURLCache] removeCachedResponseForRequest:yourRequest]
就在发起请求之前。
更新: 经过进一步研究后,我发现破坏的代码一直使用错误的枚举。查看NSURLRequest.h中的NSURLRequestCachePolicy。这就是你需要的那个,它解释了为什么设置为0为你解决问题。
答案 1 :(得分:6)
我刚刚使用过:
//URLRequest
NSString *url = [NSString stringWithFormat:@"http://www.semhora.com/jsonparser/categories/categories_%d_test.json", _categoriesIndex];
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:url]
cachePolicy:0
timeoutInterval:60.0];
现在它有效,从苹果开发论坛得到任何答案,直到现在它为什么会发生。
答案 2 :(得分:2)
缓存策略的正确枚举是:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:downloadURL cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
如果您使用的是3G,某些提供商即使您在NSMutableURLRequest
中禁用了缓存也会使用缓存,因此如果缓存策略不起作用,请将HTTP标头字段缓存控制设置为无缓存。
[request setValue:@"no-cache" forHTTPHeaderField:@"cache-control"];