Я создаю приложение с webView
и Firebase в качестве базы данных. URL, который должен использоваться для загрузки webView
, должен поступить из базы данных.
Я правильно реализовал webView
и Firebase, но проблема в том, что мой webView загружается не с URL из базы данных, а с URL, объявленным в объявлении var.
Похоже, что viewDidLoad в приоритетном порядке вызывает методы webView, загружаемые перед закрытием внутри метода Database Observe
Если я смотрю на консоль, я ясно вижу, что все работает, НО URL, который должен использоваться для загрузки webview
, извлекается из базы данных ПОСЛЕ webview
загрузки ... это должно быть сделано ДО данного что я поставил метод извлечения ДО ...
class ViewController: UIViewController {
var dbRef: DatabaseReference!
var nextUrl = "https://www.google.co.uk/"
func retrieveUrl () {
dbRef = Database.database().reference().child("EXAMPLE")
dbRef.observe(.value) { (snapshot) in
let value = snapshot.value as! NSDictionary
let url = value["url"]!
self.nextUrl = (url as! String)
print (nextUrl)
}
print ("function observe is called")
}
override func viewDidLoad () {
super.viewDidLoad()
retrieveUrl()
print ("webview is about to load")
let request = URLRequest (url: URL(string: nextUrl)!)
self.webView.load(request)
self.webView.addObserver(self, forKeyPath: #keyPath(WKWebView.isLoading), options: .new, context: nil)
}
}
в консоли я вижу, что "webview собирается загрузить" печатается перед nextUrl ... что очень странно для меня