У меня параметр намерения установлен как
dynamic
из определения намерения.Допустим, сервер, на котором я получаю информацию об этой опции, в настоящее время не работает.
Непонятно, как представить пользователям тот факт, что параметры в настоящий момент не могут быть восстановлены. Поле завершения, в которое мы должны вернуть параметры, также принимает Error
. Я заполнил его подклассом Error
, и я также реализовал протокол LocalizedError
для этого класса ... но когда я сталкиваюсь с ошибкой из приложения ярлыков, Apple просто представляет всплывающее сообщение, которое возвращает ужасное сообщение, а не локализован (но включает правильное имя ошибки).
Вот код, который я использую ...
func provideCarModelOptions(for intent: CarIntent, with completion: @escaping ([String]?, Error?) -> Void) {
if(somethingGoesWrongWithServers()){
completion([],CarError.ServerDown)
}else{
completion(ReturnListOfModels(), nil)
}
}
Вот как я реализовал перечисление CarError
public enum CarError:Error{
case serverDown
case generic
}
extension CarError : LocalizedError{
public var errorDescription: String? {
switch self {
case .serverDown:
return "Server is down"
case .generic:
return "SomethingGoesWrong"
}
}
}
Я что-то делаю неправильно или Apple неправильно обрабатывает ошибки?
provide...Options(for intent: ...)
, а iOS отображает только имя случая ошибки из перечисления ошибок, а не локализованное описание. - person Ruslan   schedule 11.08.2020