如何处理 MKDirections Request 的错误
Posted
技术标签:
【中文标题】如何处理 MKDirections Request 的错误【英文标题】:How to handler an error of MKDirectionsRequest 【发布时间】:2018-03-26 10:29:00 【问题描述】:我对错误处理不是很熟悉,因此非常感谢任何建议。
我的代码递归地多次调用 Apple API 来计算路线,因为它需要计算多个选项的距离。
do
directions.calculate(completionHandler: (response, error) in
let response = (response?.routes)! //This line bugs out
for route in response
//code
completion(result, error)
)
catch
print(error.localizedDescription)
它往往在第 5 次或第 6 次崩溃,我想知道是否有办法阻止应用程序崩溃并改为通知。
谢谢
【问题讨论】:
【参考方案1】:使用do-catch
块没有意义,因为您的代码中没有throwable
函数,因此您将无法捕获任何错误。在 Swift 中,您只能捕获标记为 throws
的函数抛出的错误,所有其他错误均无法恢复。
您应该安全地解开可选的response
,因为它可能是nil
,在这种情况下,强制解开会导致您已经遇到的不可恢复的运行时错误。
您可以使用guard
语句和可选绑定来安全地解开可选response
并在没有response
的情况下提前退出。
directions.calculate(completionHandler: (response, error) in
guard let response = response, error == nil else
completion(nil,error)
return
for route in response.routes
....
completion(result, nil)
)
【讨论】:
非常感谢这很有意义并解决了问题!以上是关于如何处理 MKDirections Request 的错误的主要内容,如果未能解决你的问题,请参考以下文章
如何处理Docker的错误消息request canceled:Docker代理问题
wx.request得到的正文字段如何处理成符合JSON格式的
如何处理来自 urllib.request.urlopen() 的响应编码,以避免 TypeError: can't use a string pattern on a bytes-like obje