Ошибка протокола has only one свойство локализованноеОписание. Я попытался создать пользовательский объект, унаследованный от NSObject и Error, но я не могу переопределить localizedDescription. Как я могу это сделать?Как переопределить localizedDescription для пользовательской ошибки в Swift 3?
Этот код не позволяет мне получить пользовательское описание:
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: моя тестовая строка»?
Не вам нужно 'override' ? –
Не можете ли вы расширить Error с новым свойством и затем прочитать это вместо этого? – Honey
@SunilChauhan no. Ничего из протокола не следует переопределять. Добавление 'override' нарушит компиляцию. – Speakus