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


  • 我在intent定义中将intent参数设置为dynamic

  • 假设我获取此选项信息的服务器当前已关闭。

目前尚不清楚如何向用户展示目前无法检索选项的事实。我们应该返回选项的完成字段也接受Error。我已经用Error的子类填充了它,并且我还为这个类实现了LocalizedError协议。。。但当我遇到来自快捷应用程序的错误时,苹果只是显示了一条弹出消息,返回了一条未本地化的可怕消息(但其中包括正确的错误名称(。

这是我正在使用的代码。。。

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"
}
}
}

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

这为我提供了本地化描述:

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

最新更新