Итак, я думаю, это потому, что вы проверяете NSURLCache
, чтобы получить ответ на свой запрос. Но иногда ваша страница может отображаться, но не кэшироваться. Действительно, сервер может ответить примерно так:
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
В нем говорится: «Вы не должны полностью кэшировать мой ответ». Как хороший гражданин, iOS не делают :). Таким образом, мы должны использовать другой способ вернуть ответ сервера. Я думаю, что лучшим решением является использование NSURLSession
, чтобы сделать ваш запрос, загрузить контент и переслать его на ваш веб-просмотр. Когда запрос будет выполнен, вы сможете получить доступ к ответу - обработчик завершения. Вот пример того, что вы можете сделать:
func loadURL(url: NSURL!) {
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let muableRequest = NSMutableURLRequest(URL: url)
muableRequest.setValue("WhateverYouWant", forHTTPHeaderField: "x-YourHeaderField")
let task = session.dataTaskWithRequest(muableRequest) { (data, response, error) in
guard error == nil else {
print("We have an error :(\(error)")
// Here, you have to handle the error ...
return
}
if let response = response {
var mimeType = ""
if response.MIMEType != nil {
mimeType = response.MIMEType!
}
var encoding = ""
if response.textEncodingName != nil {
encoding = response.textEncodingName!
}
if let httpResponse = response as? NSHTTPURLResponse {
print("HTTP Status code is \(httpResponse.statusCode)")
}
self.webView.loadData(data!, MIMEType: mimeType, textEncodingName: encoding, baseURL: url)
}
}
task.resume()
}
И вы называете этот метод так:
loadURL(NSURL(string: "https://apple.com")!)
На месте вы делали это раньше:
webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://apple.com")!))
ваш URL является загруженные средства видимы или нет –
@ Anbu.Karthik Извините, я вас не понял, что вы подразумеваете под видимым или нет? –
Всегда ли это происходит? Или только по некоторому URL? –