Опционалы в Swift

Опционалы в Swift используются в случаях, когда значение может отсутствовать. Опционалы Swift позволяют указать отсутствие значения для абсолютно любого типа, без необходимости использования специальных констант. Опционал подразумевает:

  • Значение существует, и оно равно x
  • Значение не существует вовсе.

Если значение константы или переменной при определенных условиях в коде должно когда-нибудь отсутствовать, всегда объявляйте их как опциональное значение соответствующего типа. В Swift nil не является указателем, а является отсутствием значения определенного типа. Устанавливаться в nil могут опционалы любого типа, а не только типы объектов.

Знак вопроса означает, что содержащееся в ней значение является опциональным. Можно использовать оператор if, сравнивая опционал с nil:

if myVar != nil {
	...
}

// Принудительное извлечение значения опционала
// Попытка использовать ! к несуществующему опциональному значению вызовет runtime ошибку.
println("myVar точно не nil: \(myVar!).")



Привязка опционалов может использоваться с операторами if и while, для проверки значения внутри опционала, и извлечения этого значения в константу или переменную, в рамках одного действия:

if let number = strNumber.toInt() {
	...
}


Иногда, сразу понятно из структуры программы, что опционал всегда будет иметь значение, поэтому полезно избавиться от проверки и извлечения значения опционала каждый раз при обращении к нему. Такие опционалы называются неявно извлеченные опционалы, они описываются с помощью восклицательного знака вместо вопросительного. Если вы попытаетесь получить доступ к неявно извлеченному опционалу когда он не содержит значения - вы получите runtime ошибку.