似乎在将我们的旧代码转换为beta 4时,我一直将错误转换为NSError。这甚至有时会导致警告"条件演员来自错误'到了' NSError'总是成功"。我觉得我不明白如何最好地使用Error。我想像error.code,error.localizedDescription那样思考......有没有很好的文档或教程来解释这些错误的变化?
例如:
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
现在我正在做类似的事情:
if let error = error as? NSError {
if error.code == NSURLErrorCancelled {
但是这会发出警告"条件演员来自'错误'到了' NSError'永远成功"
答案 0 :(得分:27)
错误可以桥接到NSError,就像String可以桥接到NSString一样。 I.e(错误为NSError)可行。
if (error as NSError).code == NSURLErrorCancelled {
// code
}
答案 1 :(得分:21)
这样做:
Swift 3.0和Swift 4.0
if error._code == NSURLErrorCancelled { }
答案 2 :(得分:4)
在Swift 3中捕获错误已更改。在Release Notes中搜索NSError。引用:
此外,从Cocoa和Cocoa Touch导入的错误类型会保留相应
NSError
中的所有信息,因此catch let as NSError
不再需要提取(例如)用户信息字典。特定错误类型还包含其常用用户信息键的类型化访问器。例如:
do {
let regex = try NSRegularExpression(pattern: "(", options: [])
} catch {
// error is of type NSError already
print(error.localizedDescription)
}