如何处理 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 的错误的主要内容,如果未能解决你的问题,请参考以下文章

Nginx是如何处理Request的?

如何处理Docker的错误消息request canceled:Docker代理问题

如何处理无效的 CORS 预检请求?

如何处理柏树中的纯文本 POST 请求

wx.request得到的正文字段如何处理成符合JSON格式的

如何处理来自 urllib.request.urlopen() 的响应编码,以避免 TypeError: can't use a string pattern on a bytes-like obje