If you want to use a value associated with enum case you have to switch it in this way:
enum SHError: Error {
case InvalidInputError(code: Int, message: String, info: [String:Any]? = [:])
case InvalidProcessingError(code: Int, message: String, info: [String:Any]? = [:])
var debugDescription: String {
let code: Int
switch self {
case .InvalidInputError(code: let codeValue, message: _, info: _):
code = codeValue
case .InvalidProcessingError(code: let codeValue, message: _, info: _):
code = codeValue
}
return "debug info: code: \(code)"
}
var localizedDescription: String {
return "description: \(self)"
}
}
or you can create a separate computed variable var code: Int
and use it in debugDescription
:
enum SHError: Error {
case InvalidInputError(code: Int, message: String, info: [String:Any]? = [:])
case InvalidProcessingError(code: Int, message: String, info: [String:Any]? = [:])
var debugDescription: String {
return "debug info: code: \(code)"
}
var localizedDescription: String {
return "description: \(self)"
}
var code: Int {
switch self {
case .InvalidInputError(code: let code, message: _, info: _):
return code
case .InvalidProcessingError(code: let code, message: _, info: _):
return code
}
}
}