1

UIWebView が通常の方法でリクエストをロードすると、画像を含めてキャッシュされる可能性が高くなります。カメラロールに保存する画像を選択してもらいたいです。

この時点で、ユーザーが 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];

しかし、「応答」は常にゼロです。それは、キャッシュされないことを意味しますか?


編集:

でリクエストを使用する場合:

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

有効な応答を返します。ただし、自分で作成したリクエストで同じ URL を使用すると、再び nil が返されて混乱します。

4

1 に答える 1

2

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

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

[NSURLCache sharedURLCache];

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

于 2015-05-22T07:35:52.910 に答える