В чем разница между URLCache.cachedResponse (для :) и URLCache.getCachedResponse (для: завершениемHandler :)? - PullRequest
0 голосов
/ 24 декабря 2018

Я работаю с сервером, который отвечает следующими заголовками:

Cache-Control: no-cache  
last-modified: Mon, 17 Dec 2018 14:47:19 GMT  

Следующий код:

let myTask = URLSession.shared.dataTask(request: myRequest, completionHandler: { ... })  
myTask.resume()  

правильно отправляет заголовок If-Modified-Since.

Но когда я делаю:

URLCache.shared.cachedResponse(for: myRequest)  

, я получаю nil результат, тогда как с:

URLCache.shared.getCachedResponse(for: myTask, completionHandler: { ... })  

я получаю не nil результат в completionHandler.

Я бы ожидал, что оба дадут мне одинаковые результаты.Может кто-нибудь мне это объяснит?

1 Ответ

0 голосов
/ 24 декабря 2018

Это проверяет мой ответ локального кэша.

if let request = dataRequest.request {
  if (URLCache.shared.cachedResponse(for: request) != nil) {
    URLCache.shared.removeCachedResponse(for: request)
  }
}

Также вы можете проверить определение по яблоку.

enter image description here

enter image description here

...