0

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

我的代码递归地多次调用 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 次崩溃,我想知道是否有办法阻止应用程序崩溃并改为通知。

谢谢

4

1 回答 1

1

使用do-catch块没有意义,因为您的代码中没有throwable函数,因此您将无法捕获任何错误。在 Swift 中,您只能捕获标记为 的函数引发的错误throws,所有其他错误都是不可恢复的。

您应该安全地解包 optional 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)
     }
})
于 2018-03-26T10:35:58.083 回答