2011-11-12 16 views
1

UIWebViewがリクエストをロードするとき、画像を含む通常の方法でキャッシュします。カメラロールに保存する画像を選んでいただきたいと思います。NSURLCacheからイメージを取得する方法はありますか?

この時点で、ユーザーがUIWebView内でタップしたイメージのURLを検出できます。私の無知な答えは、NSURLConnectionで画像をダウンロードすることですが、画像が既にダウンロードされていておそらく既にキャッシュに保存されているので間違っていると感じます。画像がすでにキャッシュされているかどうかを確認し、画像を2回ダウンロードする代わりに取得する方法はありますか?

私はそうのような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]; 

しかし、「レスポンス」は常にnilで、ちょうどそれがキャッシュされない暗示していることでしょうか?


編集:

要求で使用した:

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

は、それが有効な応答を返さないし。しかし、リクエストで同じURLを使用すると、自分自身を作成し​​ても、それは再びnilを返します。私は混乱します。

+0

問題の原因はわかりませんが、SDUrlCache(https://github.com/rs/SDURLCache)というライブラリを使って考慮しています。おそらくあなたのバグは、iOSがインメモリキャッシュだけを使用しているという事実と関連しているかもしれません... – Piotr

+0

@これに関する更新は何ですか? – aherlambang

答えて

2

NSURLCacheの動作は、要求のキャッシュポリシー、キャッシュ構成 およびサーバーからのキャッシュ応答によって異なります。
キャッシュを適切に動作させるには、次のことができます。

1) このように使用する前に、NSURLCacheを初期化していることを確認する必要があります。

[NSURLCache sharedURLCache];

2)webview からロードするリクエストのキャッシュポリシーを手動で設定できます。request.cachePolicy = NSURLCacheStorageAllowed;

関連する問題