錯誤協議has only one屬性localizedDescription。 我試圖創建自NSObject和錯誤繼承的自定義對象,但我無法重寫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' ? –
你不能擴展新的屬性錯誤,然後讀取? – Honey
@SunilChauhan no。任何來自協議的內容都不應該被覆蓋。添加'override'會中斷編譯。 – Speakus