ios - Trying to print a description of an Error (AKA ErrorType) enum -
i using enum inherits error (or errortype in swift 2) , trying use in such way can catch error , use print(error.description) print description of error.
this error enum looks like:
enum updateerror: error {     case noresults     case updateinprogress     case nosubredditsenabled     case setwallpapererror      var description: string {         switch self {         case .noresults:             return "no results found current size & aspect ratio constraints."         case .updateinprogress:             return "a wallpaper update in progress."         case .nosubredditsenabled:             return "no subreddits enabled."         case .setwallpapererror:             return "there error setting wallpaper."         }     }      // 1 of many nested enums     enum jsondownloaderror: error {         case timedout         case offline         case unknown          var description: string {             switch self {             case .timedout:                 return "the request reddit json data timed out."             case .offline:                 return "the request reddit json data failed because network offline."             case .unknown:                 return "the request reddit json data failed unknown reason."             }         }     }      // ... }   an important thing note there few nested enums within updateerror won't work because nested enums aren't of updateerror type themselves:
do {     try functionthatthrowsupdateerror() } catch {     nslog((error as! updateerror).description) }   is there better way of printing description of error without having check every type of updateerror occurred in catch statement?
you define (possibly empty) protocol, , conform errors it.
protocol descriptiveerror {    var description : string { } }  // specify descriptiveerror protocol in each enum   you pattern match against protocol type.
do {   try functionthatthrowsupdateerror() } catch let error descriptiveerror {   print(error.description) }      
Comments
Post a Comment