如何处理MKDirectionsRequest的错误

时间:2018-03-26 10:29:01

标签: swift error-handling crash mkdirection

我对错误处理不太熟悉,所以任何建议都会非常感激。

我的代码以递归方式向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 个答案:

答案 0 :(得分: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)
     }
})