Подтвердить что ты не робот

Как развернуть двойные опции?

Как вы разворачиваете строку, которая возвращается как:

(Необязательный (необязательный "синий" ))

    var cityName = String()

    if let cityAnno = annotation as MGLAnnotation! {

        cityName = String(stringInterpolationSegment: cityAnno.title!)

    }

cityLabelName.text = ("\(cityName), \(county)")

cityLabelName печатает как (необязательно "Нью-Йорк" )

4b9b3361

Ответ 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"
}

Ответ 2

Try

var a:String?? = "1"
print((a))
if let b = a,c = b{
    print(c)
}

Снимок экрана детской площадки

введите описание изображения здесь

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

let d = a!!