КОДЕКС
Необязательная цепочка в Swift
Узнайте, как бороться с nils при доступе к свойствам в Swift
Необязательная цепочка означает вызов свойств и методов необязательного. Дополнительная цепочка безопасна и не вызывает сбоев приложения, если встречается nil
.
Например:
something?.someValue?.someMethod()
Работа с опциями в Swift
Работа с опциями может быть неприятной. Вместо того, чтобы относиться к необязательным значениям с осторожностью, часто возникает соблазн принудительно развернуть их с помощью оператора восклицательного знака !
следующим образом:
optional!.value
Это может сработать. Однако имейте в виду, что принудительное развертывание означает, что приложение выйдет из строя, если обнаружит nil
.
Здесь помогает необязательная цепочка. Вы можете использовать необязательную цепочку для безопасного вызова метода или свойства объекта, которым может быть nil
:
something?.someValue?.someMethod()
Пример
Объявим константу optionalText
:
let optionalText: String? = "Hi, this is a test." print("The text says: \(optionalText)")
Выход:
The text says: Optional("Hi, this is a test.")
Давайте тогда возьмем optionalText
с заглавной буквы:
print("The text says: \(optionalText.uppercased())")
Ой! Получаем ошибку. Он говорит:
error: value of optional type 'String?' must be unwrapped to refer to member 'uppercased' of wrapped base type 'String' print("The text says: \(optionalText.uppercased())")
Эта ошибка возникает, когда мы пытаемся вызвать uppercased()
для строкового значения, которое может быть nil
.
Что мы можем сделать, так это использовать необязательную цепочку, чтобы проверить, является ли optionalText
строкой, и только затем вызвать uppercased()
:
print("The text says: \(optionalText?.uppercased())")
Выход:
The text says: Optional("HI, THIS IS A TEST.")
Оператор вопросительного знака - это необязательный оператор цепочки. Он работает, выполняя все, что находится после вопросительного знака, только если все, что до него, не nil
.
Теперь мы знаем, как использовать необязательную цепочку для безопасного доступа к необязательным значениям.
Наконец, давайте используем nil coalescing, чтобы удалить слово Optional
из печати:
print("The text says: \(optionalText?.uppercased() ?? "not available")")
Результат:
The text says: HI, THIS IS A TEST.
Длина дополнительной цепочки
Помните, что вы можете создавать необязательные цепочки сколь угодно долго:
someOptional?.someOtherOptional?.yetAnotherOptional?
Заключение
Необязательная цепочка - удобный способ иметь дело со значениями optionals в Swift. Используя их, вы можете запросить свойства чего-то, что может быть nil
.
Вот пример дополнительной цепочки:
something?.someValue?.someMethod()
Спасибо за прочтение. Удачного кодирования!
Убедитесь, что вы подписаны на меня на Medium. Давайте подключимся и к Linkedin.
Стать гением
Тебе понравилась эта статья?
Станьте участником Medium.com, чтобы читать главные новости экспертов в этой области.
Отказ от ответственности: присоединяясь по предоставленной ссылке, я зарабатываю небольшую комиссию без каких-либо дополнительных затрат для вас :)