#swift #xcode #error-handling #clgeocoder
#быстрый #xcode — код #обработка ошибок #клгеокодер
Вопрос:
Я работаю над проектом, в котором я использую CLGeocoder для определения меток для определенного местоположения. Очень простой вызов, подобный этому.
CLGeocoder().geocodeAddressString(location) { (placemarks, error) in
if let error = error {
print(error.localizedDescription)
}
Вместо того, чтобы распечатывать localizedDescription ошибки localizedDescription, я хотел бы иметь возможность записывать код ошибки и реагировать соответствующим образом. Например, если местоположение не может быть найдено, выводится мое localizedDescription
The operation couldn’t be completed. (kCLErrorDomain error 8.)
Как я могу в Swift определить код CLError, чтобы мне не приходилось включать какое-то локализованное описание, которое будет меняться в зависимости от языка пользователя?
Можно ли это сделать?
У меня есть только пара дел, которые я хочу включить.
Ответ №1:
Вам нужно привести ошибку как CLError
, а затем переключить ошибку code
:
if let error = error as? CLError {
switch error.code {
case .locationUnknown:
print("locationUnknown: location manager was unable to obtain a location value right now.")
case .denied:
print("denied: user denied access to the location service.")
case .promptDeclined:
print("promptDeclined: user didn’t grant the requested temporary authorization.")
case .network:
print("network: network was unavailable or a network error occurred.")
case .headingFailure:
print("headingFailure: heading could not be determined.")
case .rangingUnavailable:
print("rangingUnavailable: ranging is disabled.")
case .rangingFailure:
print("rangingFailure: a general ranging error occurred.")
default : break
}
}