我正在使用一个服务器,该服务器使用以下报头进行响应:

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结果。
我原以为两人都能给我同样的结果。有人能给我解释一下吗?

最佳答案

这将检查本地缓存响应。

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

你也可以按照苹果的定义来检查。
swift - URLCache.cachedResponse(for :)和URLCache.getCachedResponse(for:completionHandler :)有什么区别?-LMLPHP
swift - URLCache.cachedResponse(for :)和URLCache.getCachedResponse(for:completionHandler :)有什么区别?-LMLPHP

关于swift - URLCache.cachedResponse(for :)和URLCache.getCachedResponse(for:completionHandler :)有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53913600/

10-11 09:25