【发布时间】:2017-05-10 14:54:08
【问题描述】:
错误协议has only one 属性localizedDescription。 我试图创建从 NSObject 和 Error 继承的自定义对象,但我无法覆盖本地化描述。我该怎么做?
此代码不允许我获取自定义描述:
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 然后读它吗?
-
@SunilChauhan 没有。协议中的任何内容都不应被覆盖。添加
override会中断编译。 -
@Honey 我不想扩展协议。我只想制作符合错误协议的自定义类。
-
@Speakus 哎呀,错过了。!
标签: ios swift macos inheritance swift3