エラープロトコルhas only oneプロパティlocalizedDescription。 NSObjectとErrorから継承したカスタムオブジェクトを作成しようとしましたが、localizedDescriptionをオーバーライドできません。どうやってやるの?Swift 3のカスタムエラーに対してlocalizedDescriptionをオーバーライドする方法は?
このコードは、私は、カスタムの説明を取得することはできません:
class MyError: NSObject, Error {
var desc = ""
init(str: String) {
desc = str
}
override var description: String {
get {
return "MyError: \(desc)"
}
}
var localizedDescription: String {
get {
return self.description
}
}
}
func test_my_code() {
let error = MyError(str: "my test string")
let x = error as Error
print(x.localizedDescription)
}
呼び出し機能「test_my_codeは、」予期しない結果が得られます。 「操作を完了できませんでした...」。
"MyError:my test string"の結果を得るにはどうすればよいですか?
はあなたが必要としません 'override' ? –
新しいプロパティでErrorを拡張して代わりにそれを読み取ることはできませんか? – Honey
@ SunilChauhan no。プロトコルからの何も上書きしないでください。 'override'を追加すると、コンパイルが中断されます。 – Speakus