Как обработать ошибку MKDirectionsRequest
Я не очень знаком с обработкой ошибок, поэтому любой совет будет очень признателен.
Мой код рекурсивно выполняет несколько вызовов API Apple для расчета маршрута, так как ему необходимо рассчитать расстояние для нескольких вариантов.
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)
}
})