Учебники

Swift — опционально

Swift 4 также вводит тип Optionals , который обрабатывает отсутствие значения. Необязательные говорят, что «есть значение, и оно равно x» или «нет значения вообще».

Optional — это отдельный тип, фактически один из новых сверхмощных перечислений Swift 4. У него есть два возможных значения, None и Some (T) , где T — это связанное значение правильного типа данных, доступного в Swift 4.

Вот необязательное объявление Integer —

var perhapsInt: Int?

Вот необязательное объявление String —

var perhapsStr: String?

Вышеуказанное объявление эквивалентно явной инициализации его значением nil, что означает отсутствие значения.

var perhapsStr: String? = nil

Давайте рассмотрим следующий пример, чтобы понять, как работают дополнительные функции в Swift 4 —

Live Demo

var myString:String? = nil

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —

myString has nil value

Необязательные функции аналогичны использованию nil с указателями в Objective-C, но они работают для любого типа, а не только для классов.

Принудительная распаковка

Если вы определили переменную как необязательную , то для получения значения из этой переменной вам придется развернуть ее. Это просто означает восклицательный знак в конце переменной.

Давайте возьмем простой пример —

Live Demo

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —

Optional("Hello, Swift 4!")

Теперь давайте применим распаковку, чтобы получить правильное значение переменной —

Live Demo

var myString:String?

myString = "Hello, Swift 4!"

if myString != nil {
   print( myString! )
} else {
   print("myString has nil value")
}

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

Hello, Swift 4!

Автоматическое развертывание

Вы можете объявить необязательные переменные, используя восклицательный знак вместо знака вопроса. Такие необязательные переменные будут автоматически развернуты, и вам не нужно будет использовать какой-либо дополнительный восклицательный знак в конце переменной, чтобы получить назначенное значение. Давайте возьмем простой пример —

Live Demo

var myString:String!
myString = "Hello, Swift 4!"

if myString != nil {
   print(myString)
} else {
   print("myString has nil value")
}

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —

Hello, Swift 4!

Опциональная привязка

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

Необязательная привязка для оператора if выглядит следующим образом:

if let constantName = someOptional {
   statements
}

Давайте рассмотрим простой пример, чтобы понять использование необязательного связывания —

Live Demo

var myString:String?
myString = "Hello, Swift 4!"

if let yourString = myString {
   print("Your string has - \(yourString)")
} else {
   print("Your string does not have a value")
}

Когда мы запускаем вышеуказанную программу, используя площадку, мы получаем следующий результат —