Есть ли способ получить изображение из NSURLCache? - PullRequest
1 голос
/ 12 ноября 2011

Когда UIWebView загружает запрос обычным способом, он, скорее всего, будет кешировать его, включая изображения. Я хотел бы, чтобы люди выбирали изображения для хранения в своей Фотопленке.

На данный момент я могу определить URL изображения, на которое пользователь нажал в UIWebView. Мой невежественный ответ будет состоять в том, чтобы загрузить изображение с 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];

Но «ответ» постоянно равен нулю, означает ли это, что он не кэшируется?


Edit:

При использовании запроса в:

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

Возвращает правильный ответ. Однако если я использую тот же URL в запросе, который я создаю сам, он снова возвращает ноль, я запутался.

1 Ответ

2 голосов
/ 22 мая 2015

Поведение NSURLCache зависит от политики кеша запроса, конфигурации кеша и ответа кеша от сервера.
Для правильной работы кэша вы можете сделать следующее.

1) Вы должны убедиться, что инициализируете NSURLCache, прежде чем использовать его следующим образом.

[NSURLCache sharedURLCache];

2) Вы можете вручную установить политику кэширования запроса, загружаемую из веб-запроса request.cachePolicy = NSURLCacheStorageAllowed;

...