有没有办法从NSURLCache中检索图像?

时间:2011-11-12 12:31:19

标签: image caching resources uiwebview nsurlcache

当UIWebView以正常方式加载请求时,它很可能会缓存它,包括它的图像。我希望人们选择要存储在相机胶卷中的图像。

此时我可以检测用户在UIWebView中点击的图像的URL。我无知的答案是使用NSURLConnection下载图像,但由于图像已经下载并且可能已经存储在缓存中,因此感觉不对。那么有没有办法检查图像是否已经被缓存并从它们那里获取而不是两次下载图像?

我试图像这样得到一个NSCachedURLResponse:

   NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Collage_of_Six_Cats-02.jpg/250px-Collage_of_Six_Cats-02.jpg"]];
    NSCachedURLResponse *response = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];

但是'响应'总是为零,这是否意味着它不会被缓存?


编辑:

在以下位置使用请求时:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

确实会返回有效的回复。但是,如果我在请求中使用相同的URL我自己创建它再次返回nil我很困惑。

1 个答案:

答案 0 :(得分:2)

NSURLCache行为取决于请求的缓存策略,缓存配置 并缓存来自服务器的响应。
您可以执行以下操作以使缓存正常工作。

1) 你必须确保在使用它之前初始化NSURLCache。

[NSURLCache sharedURLCache];

2)您可以从webview手动设置要加载的请求缓存策略 request.cachePolicy = NSURLCacheStorageAllowed;