Как обработать ошибку 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)
     }
})
Другие вопросы по тегам