How does Error work in Swift in Xcode 8 beta 4

Jason Hocker picture Jason Hocker · Aug 1, 2016 · Viewed 15.9k times · Source

Seems like when converting our old code to beta 4, I keep casting Error to NSError. That will even lead sometimes to a warning "conditional cast from 'Error' to 'NSError' always succeeds". I feel like I'm not understanding how best to use Error. I want to get to thinks like error.code, error.localizedDescription... Is there good documentation or tutorials that explains these Error changes?

For example:

func webView(_ webView: UIWebView, didFailLoadWithError error: Error) { 

Right now I'm doing something like:

if let error = error as? NSError {
 if error.code == NSURLErrorCancelled {

But that gives the warning "Conditional cast from 'Error' to 'NSError' always succeeds"

Answer

DerrickHo328 picture DerrickHo328 · Aug 13, 2016

Error is bridgeable to NSError in the same way that String is bridgeable to NSString. I.e (error as NSError) would work.

if  (error as NSError).code == NSURLErrorCancelled { 
    // code
}