使用 Siri 处理带有意图参数和动态选项的错误

Mat*_*oal 6 siri swift sirishortcuts

  • 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我实现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"

        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么还是苹果没有以正确的方式处理错误?

小智 6

这对我提供本地化描述很有用:

completion(nil, INIntentError.init(_nsError: NSError(domain: "com.Domain.error", code: 0, userInfo: [NSLocalizedDescriptionKey: "Error Message"])))
Run Code Online (Sandbox Code Playgroud)