String!
) вместо знака вопроса (String?
) после типа, который вы хотите сделать опциональным.
nil
в будущем. Всегда используйте обычный опциональный тип, если такая вероятность не равна нулю.
let possibleString: String? = "Опциональная строка."
let forcedString: String = possibleString!
let assumedString: String! = "Неявно извлекаемая опциональная строка."
let implicitString: String = assumedString
nil
и Вы пытаетесь получить доступ к его запакованному значению, Вы получите ошибку времени выполнения. Результат будет тот же, если бы Вы попробовали поставить восклицательный знак после обычного опционала, который не содержит значения:
let assumedString: String! = nil
let implicitString: String = assumedString // ошибка выполнения
nil
, а потому будет выведена в теле if
:
let assumedString: String! = "Неявно извлекаемая опциональная строка."
if assumedString != nil {
print(assumedString)
}
let assumedString: String! = "Неявно извлекаемая опциональная строка."
if let definiteString = assumedString {
print(definiteString)
}