Type casting в Swift позволяет тебе проверить или преобразовать тип экземпляра во время выполнения. Swift предоставляет четыре оператора для этой цели.
isИспользуй is для проверки, принадлежит ли экземпляр определённому типу. Он возвращает Bool и никогда не изменяет значение.
if animal is Dog {
print("It's a dog")
}
as?Используй as? для условного даункаста. Он возвращает опциональное значение, поэтому безопасно возвращает nil, если приведение не удалось — это делает его предпочтительным выбором в большинстве ситуаций.
if let dog = animal as? Dog {
dog.bark()
}
as!Используй as! для принудительного даункаста. Он распаковывает результат напрямую, но падает во время выполнения, если приведение не удалось. Используй это только когда ты абсолютно уверен, что приведение будет успешным.
let dog = animal as! Dog
asИспользуй as для апкаста (преобразования к родительскому типу) или бриджинга между типами Swift и Objective-C. Это приведение всегда гарантированно успешно и не требует опциональности.
let animal: Animal = dog as Animal
let string = nsString as String
as? для безопасного условного приведенияas! только когда неудача приведения действительно невозможнаis идеален для проверки типа перед ветвлением логикиas обрабатывает апкаст и бриджинг между Swift и Objective-CЭти операторы особенно важны при работе с иерархиями наследования, типами протоколов и коллекциями смешанных типов, таких как [Any] или [AnyObject].
Оператор is в Swift возвращает опциональное значение, которое равно nil если проверка типа не удалась, что делает его безопасным для использования в выражениях опционального связывания.
Новый — ещё не проверен сообществом
Вы