【发布时间】:2020-03-10 15:52:59
【问题描述】:
我从意图定义中将意图参数设置为
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 仅显示错误枚举中的错误案例名称,而不是本地化描述。 -
你们中的任何人都找到了解决方案吗?我也有同样的问题?
标签: swift siri sirishortcuts