为什么Error localizedDescription的值取决于推断类型?

时间:2017-11-20 16:11:25

标签: ios swift

考虑下面的简单代码:

func showError(error: Error) {
    debugPrint("A", error)
    debugPrint("B", error.localizedDescription)
    if let myError = error as? BarError {
        debugPrint("C", myError.localizedDescription)
    }
}

以下代码输出:

"A" external error: La connexion Internet semble interrompue.
"B" "L’opération n’a pas pu s’achever. (Foo.BarError erreur 0.)"
"C" "An error happened. My description. (external error: La connexion Internet semble interrompue.)"

为什么.localizedDescription不会返回相同的消息,具体取决于编译器认为该对象的类型?

以下是BarError的代码:

public enum BarError: Error, CustomStringConvertible {
    case a
    case b
    case externalError(Error)

    var localizedDescription: String {
        return "An error happened. My description. (\(self))"
    }

    public var description: String {
        switch self {
        case .a:
            return "A"
        case .b:
            return "B"
        case .externalError(let error):
            return "external error: \(error.localizedDescription)"
    }
}

0 个答案:

没有答案