У меня есть этот кусок кода в моей WKWebView метод делегата:индексацию USERINFO из NSError
func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
var URL: NSURL? = webView.URL
if URL == nil {
let URLString: String = error.userInfo[NSURLErrorFailingURLStringErrorKey]
URL = NSURL(string: URLString)
}
print(URL)
}
К сожалению, он не компилируется. Я получаю сообщение об ошибке:
Cannot subscript a value of type '[NSObject : AnyObject]' with an index of type 'String'
Однако, если я могу изменить его, как это так, код компилируется нормально:
func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
var URL: NSURL? = webView.URL
if URL == nil {
if let urlString = error.userInfo[NSURLErrorFailingURLStringErrorKey] as? NSString {
URL = NSURL(string: urlString as String)
}
}
print(URL)
}
Мне не нравится это решение, потому что это слишком большая часть ненужного литья типов.
Почему второе решение работает, но первое не компилируется? Есть ли лучший способ, как это сделать в Swift?
Спасибо. Я был озадачен сообщениями об ошибках компилятора раньше, но еще не понял мой урок. –
Это то, над чем агрессивно работает Apple. каждый выпуск Xcode становится лучше. Но да, это еще не совсем! – TwoStraws