如何处理 MKDirections 请求的错误

How to handler an error of MKDirectionsRequest

我对错误处理不是很熟悉,因此非常感谢任何建议。

我的代码多次调用 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次容易崩溃,想知道有没有办法阻止应用程序崩溃并通知。

谢谢

使用 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)
     }
})