Если вы хотите использовать значение, связанное с регистром перечисления, вы должны переключить его следующим образом:
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)"
}
}
или вы можете создать отдельную вычисляемую переменную var code: Int
и использовать ее в 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
}
}
}