Можете ли вы безопасно развернуть вложенные опции в swift в одну строку? - PullRequest
0 голосов
/ 09 ноября 2018

В настоящее время я использую четыре строки, чтобы развернуть заголовок из mapViewDidSelectMKAnnotationView.

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    if let title = view.annotation?.title {
        if let title = title {
            // do something with title
        }
    }
}

Могу ли я сделать это без необходимости разворачивать вещи дважды? Что-то вроде:

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    if let title = view.annotation?.title? {
        // do something with title
    }
}

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

1 Ответ

0 голосов
/ 09 ноября 2018

Вы можете сделать это так:

if let title = view.annotation?.title as? String {

}

view.annotation?.title является двойной необязательной строкой: String??, поскольку как свойство annotation MKAnnotationView, так и его собственное свойство title являются необязательными.


Вы также можете использовать оператор guard следующим образом:

guard let title = view.annotation?.title as? String else {
    return 
}
//use title in the rest of the scope

Вы также можете использовать оператор switch:

switch title {
case .some(.some(let t)):
    //use the title here
    print(t)
default:
    break 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...