Какая разница между ошибкой и NSError в Swift?

Я создаю библиотеку, которая должна возвращать ошибки, поэтому мне интересно, какой из них следует использовать для моих целей.

UPDATE: Я должен уточнить, возвращенный результат будет от асинхронного вызова, поэтому мне нужно сообщить пользователю, была ли ошибка, и я хотел бы знать, какой тип я должен использовать Error или NSError.

Ответы

Ответ 1

NSError - это класс Cocoa

Объект NSError инкапсулирует информацию об условии ошибки в расширяемом, объектно-ориентированном виде. Он состоит из предопределенного домена ошибки, кода ошибки, специфичного для домена, и словаря пользовательской информации, содержащего информацию о приложении.

Error - это протокол Swift , какие классы, структуры и перечисления могут и NSError соответствовать.

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

Любой тип, объявляющий соответствие протоколу Error, может использоваться для представления ошибки в системе обработки ошибок Swifts. Поскольку протокол Error не имеет собственных требований, вы можете объявить соответствие для любого настраиваемого типа, который вы создаете.

Указанные цитаты являются описаниями субтитров в документации.

Система обработки ошибок Swifts - это шаблон для обнаружения ошибок с помощью try - catch. Это требует, чтобы ошибка была обнаружена методом thrown. Этот шаблон гораздо более универсален, чем традиционная обработка ошибок с использованием экземпляров NSError. Если вы планируете не внедрять try - catch, вам действительно не нужен протокол Error.