Ответ 1
Учитывая двойную опцию, такую как этот дважды завернутый String
:
let a: String?? = "hello"
print(a as Any) // "Optional(Optional("hello"))\n"
@Leo, показал, что вы можете использовать необязательную привязку дважды:
if let temp = a, let value = temp {
print(value) // "hello\n"
}
или развернуть инструмент дважды:
print(value!!) // don't do this - you're just asking for a crash
Вот еще четыре метода, которые вы можете использовать для безопасного разворачивания двойного опциона:
Метод 1:
Вы также можете использовать сопоставление с образцом:
if case let value?? = a {
print(value) // "hello\n"
}
Метод 2:
В качестве альтернативы вы можете дважды использовать оператор объединения nil ??
:
print((a ?? "") ?? "") // "hello\n"
Способ 3:
Или вы можете использовать ??
с необязательной привязкой:
if let value = a ?? nil {
print(value) // "hello\n"
}
Способ 4:
Кроме того, вы можете использовать flatMap
с необязательной привязкой:
if let value = a.flatMap({ $0 }) {
print(value) // "hello\n"
}