У меня есть следующий класс, определенный на игровой площадке с Swift 3:
class MyError: Error {
}
Затем я создаю экземпляр такого класса и проверяю, является ли он NSError
let firstError = MyError()
firstError is NSError // Output: false
Вывод соответствует ожидаемому, и я также получаю предупреждение, которое указывает Cast from 'MyError' to unrelated type 'NSError' always fails
. Для меня это имеет смысл, но если я немного изменю код и объявлю переменную как Error
, я получу странный результат:
var secondError: Error
secondError = MyError()
secondError is NSError // Output: true
И в этом случае я получаю предупреждение в последней строке, которая говорит 'is' test is always true
. Я не понимаю, почему Error
всегда будет NSError
, когда модель определяется наоборот (NSError: Error
). Любая идея, что здесь происходит?
Error
кNSError
. Быстрый поиск в репозитории Swift нашел следующее: github .com/apple/swift/blob/ - person Bryan Chen   schedule 01.12.2016