URLCache.cachedResponse(for :)和URLCache.getCachedResponse(for:completionHandler :)有什么区别?

时间:2018-12-24 12:40:36

标签: swift nsurlcache

我正在使用响应以下标头的服务器:

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 :(得分:0)

这将检查我的本地缓存响应。

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