swift - Change Error localizedDescription -
this question has answer here:
i've error class is:
public enum modelerror: error { case invalidarray(model: string) var localizeddescription: string { switch self { case .invalidarray(model: let model): return "\(model) has invalid array" default: return "modelerror" } } } and when passed error in callback function, want access custom localizeddescription. instance:
func report(_ error: error) { print("error report: \(error.localizeddescription)") } but calling report(modelerror.invalidarray(model: "test")) prints:
"the operation couldn’t completed. (modelerror error 0.)" such things seems feasible nserror since can override localizeddescription property there. don't want use nserror since it's not swift thing , lot of libraries work error.
according documentation, localizeddescription implemented in protocol extension, not in protocol declaration, means there's nothing adhere or override. there type-wide interface enums adhere error.
my way around use wrapper protocol:
protocol localizeddescriptionerror: error { var localizeddescription: string { } } public enum modelerror: localizeddescriptionerror { case invalidarray(model: string) var localizeddescription: string { switch self { case .invalidarray(model: let model): return "\(model) has invalid array" default: return "modelerror" } } } let error: localizeddescriptionerror = modelerror.invalidarray(model: "model") let text = error.localizeddescription // model has invalid array
Comments
Post a Comment