Обработка ошибок с помощью параметров намерения и динамических параметров с помощью Siri

  • У меня параметр намерения установлен как 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 неправильно обрабатывает ошибки?


person MatterGoal    schedule 14.11.2019    source источник
comment
Не совсем уверен, что следую твоему требованию. Но пробовали ли вы добавить свой собственный тип для захвата определенного события в вашем исполнении. Таким образом, если ваш сервер выйдет из строя, вы сможете зафиксировать его в своем типе и обработать соответствующим образом.   -  person ravisekahrp    schedule 11.12.2019
comment
Удалось ли вам это понять? Я столкнулся с той же проблемой, когда мне нужно вернуть настраиваемую ошибку из метода provide...Options(for intent: ...), а iOS отображает только имя случая ошибки из перечисления ошибок, а не локализованное описание.   -  person Ruslan    schedule 11.08.2020
comment
Кто-нибудь из вас нашел решение для этого? у меня такая же проблема?   -  person Nandha    schedule 02.12.2020


Ответы (1)


Это помогло мне предоставить локализованное описание:

completion(nil, INIntentError.init(_nsError: NSError(domain: "com.Domain.error", code: 0, userInfo: [NSLocalizedDescriptionKey: "Error Message"])))
person youthdancing    schedule 16.02.2021