类型不符合协议CustomStringConvertible

时间:2017-02-24 20:48:49

标签: swift enums swift3

我正在实现try catch enum:

enum processError: Error, CustomStringConvertible {

        case one
        var localizedDescription: String{
            return "one"
        }
        case two
        var localizedDescription: String {
            return "two"
        }
    }

但我收到以下错误:

  

type processError不符合协议CustomStringConvertible

但是如果我在第二种情况下更改变量的名称,我就不会收到错误:

enum processError: Error, CustomStringConvertible {

    case one
    var localizedDescription: String{
        return "one"
    }
    case two
    var description: String {
        return "two"
    }
}

我的问题是为什么我不能为所有情况使用相同的变量名称?

我真的很感谢你的帮助。

1 个答案:

答案 0 :(得分:5)

问题是CustomStringConvertible协议需要一个属性:

var description: String

您需要拥有description属性,否则您将收到不符合协议的错误。

我也建议采用这种方法:

enum processError: Error, CustomStringConvertible {
    case one
    case two

    var description: String {
        switch self {
            case .one:
                return "one"
            case .two:
                return "two"
        }
    }
}