NSError: получить localizedDescription из кода

#ios #swift #cocoa #nserror #cfnetwork

#iOS #swift #cocoa #nserror #cfnetwork

Вопрос:

Возможно ли получить локализованные описания из кодов ошибок?

Пример: когда приложение пытается подключиться в автономном режиме, NSURLSession возвращает ошибку:

Ошибка Domain= NSURLErrorDomain Code =-1009 «Подключение к Интернету, похоже, отключено».

Возможно ли получить «Похоже, что подключение к Интернету отключено». описание с использованием домена и кода? Что-то вроде следующего (на самом деле это не работает):

 let error = NSError(domain: "NSURLErrorDomain", code: -1009)
print(error.localizedDescription)
  

Ответ №1:

Это работает только тогда, когда NSLocalizedDescriptionKey установлен в справочнике user info . По-видимому, вы не используете объект NSError из NSURLSession, и поэтому строка по умолчанию создается из домена и кода. Более подробную информацию см. В документации NSError .

Если вы хотите локализовать сообщения об ошибках, которые вы показываете своим пользователям, вам нужно будет проверить код ошибки на наличие типа ошибки и показать соответствующим образом локализованную строку. Подробнее об использовании локализации см. В разделе Локализация вашего приложения.


Редактировать:

Повторное чтение вашего вопроса, я думаю, я неправильно понял ваш вопрос.

Если вы хотите инициализировать объект NSError с помощью домена и кода ошибки, и чтобы он содержал определенное сообщение об ошибке, соответствующее коду ошибки, используемому NSURLSession, ответ — НЕТ.

Конкретные коды ошибок не являются общепризнанным стандартом, и ничто не мешает другим приложениям использовать те же коды.

При этом NSError не заполняет поля сообщений автоматически в соответствии с конкретными кодами ошибок. Клиенты, использующие объект NSError, должны сделать это вручную.