Как проверить, является ли ошибка подклассом NSError

Максим Косов

Мне нужна функция, которая, в любом случае Error, даст мне какое-то ее описание.

protocol CustomError { }

func customDescription(_ error: Error) -> String {
    switch error {
    case let customError as CustomError:
        return "custom error"
    case ???:
        return "not subclass of NSError"
    case let nsError as NSError:
        return "subclass of NSError"
    }
}

Выше не настоящий код, и мне нужно не Stringописание, а Dictionary, но это не важно в контексте вопроса.

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

Мартин Р

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

Что вы можете сделать, так это проверить динамический тип значения с помощью type(of:):

type(of: error) is NSError.Type

оценивается как trueесли errorявляется экземпляром NSErrorили подклассом.

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Вызов метода, который назначает NSError при сбоях блока

как разобрать ошибку nserror, полученную от полосы

Как преобразовать исключение в объект NSError

Как правильно обрабатывать указатели NSError **?

Неизвестное имя типа 'NSError' и другие

Хорошая практика - расширять NSError

Ошибка при передаче перечисления для кода в инициализаторе NSError

Как найти описание ошибки в коде NSError?

Как я могу использовать NSError в моем приложении для iPhone?

Преобразование ErrorType в NSError теряет связанные объекты

Как правильно связать ошибки Swift с аргументами в NSError

Быстрое соединение функции NSError с неработающей функцией throwable

Swift: следует ли считать NSError устаревшим?

Проверка кода NSError: двоичный оператор '==' нельзя применить к двум операндам Int

Как получить сообщение об ошибке NSError в iOS?

Правильный способ передать NSError из URLSession

Быстрая ошибка: '(AFHTTPRequestOperation!, NSError?) -> не преобразуется в' ((AFHTTPRequestOperation?, NSError) -> Void?

Невозможно вызвать инициализатор для типа «AVCaptureDeviceInput» со списком аргументов типа «(устройство: AVCaptureDevice !, ошибка: inout NSError?)»

ErrorType нельзя преобразовать в NSError.

В чем разница между Error и NSError в Swift?

Ошибка преобразования Swift 3 / NSError

Невозможно преобразовать значение типа '(данные: CMAccelerometerData !, err: NSError!)

Почему [[NSError alloc] init]; в Xcode выдает ошибку?

Swift, NSJSONSerialization и NSError

Swift, NSJSONSerialization и NSError

Alamofire 2, как получить NSError?

Создайте новый NSError в Swift (чтобы отклонить обещание от PromiseKit)

Приведение CustomError в ErrorType в NSError теряет userInfo

Недопустимое преобразование из функции бросания типа (_, _, _) бросает -> Пустота в тип функции без метания (NSData ?, NSURLResponse ?, NSError?) -> Пустота

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    Как не использовать HttpClient с ЛЮБЫМ сертификата SSL, независимо от того, как «плохо» это

  3. 3

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  4. 4

    Elasticsearch - Нечеткий поиск не дает предложения

  5. 5

    Modbus Python Schneider PM5300

  6. 6

    Автозаполнение с Java, Redis, Elastic Search, Монго

  7. 7

    Ошибка «LINK: фатальная ошибка LNK1123: сбой при преобразовании в COFF: файл недействителен или поврежден» после установки Visual Studio 2012 Release Preview

  8. 8

    (fields.E300) Поле определяет связь с моделью, которая либо не установлена, либо является абстрактной.

  9. 9

    Проблемы со сборкой Python Image Registration Toolkit

  10. 10

    Vue js CLI 2 импортирует и использует плагин javascript

  11. 11

    Как отправить файл с сообщением в Discord с помощью JDA?

  12. 12

    В чем разница между CRC-16 / CCITT-FALSE и CRC-16 / X-25?

  13. 13

    Single legend for Plotly subplot for line plots created from two data frames in R

  14. 14

    Vim - автокоманды игнорируются в коде автокоманд

  15. 15

    Метод ошибки Illuminate \\ Database \\ Eloquent \\ Collection :: save не существует. в Laravel

  16. 16

    Статус HTTP 403 - ожидаемый токен CSRF не найден

  17. 17

    Ленивое объединение FPU в Cortex-M4F

  18. 18

    Работа с отсутствующими значениями для одной переменной в R

  19. 19

    Как очистить или очистить StringBuilder?

  20. 20

    PyQt5 не работает как «подходящий UI Toolkit» для Mayavi с Python 3.6.

  21. 21

    Vue 2 с Vue CLI - как сделать src / static static, чтобы я мог использовать изображения, которые там есть?

популярныйтег

файл