Необязательная привязка в операторе if
работает следующим образом: она проверяет, имеет ли данное значение значение и соответствует ли оно этому значению if
block
if let constant = optional {
constant
}
При необязательном связывании в операторе guard
он проверяет, существует ли значение и, если существует, он продолжается в текущей области с переменной / константой, назначенной в этой области
guard let constant = optional else { ... }
constant
Итак, для вашего инициализатора вам нужно назначить константу, поэтому вам нужно использовать ключевое слово let
, а ваш инициализатор необязателен, вам нужно вернуть nil
, если инициализация не удалась
guard let aString = optionalString() else { return nil }
self.aString = aString