Sappiamo che possiamo usare if letun'istruzione come scorciatoia per verificare la presenza di uno zero opzionale e poi scartare.
Tuttavia, voglio combinarlo con un'altra espressione utilizzando l'operatore logico AND &&.
Quindi, ad esempio, qui eseguo il concatenamento opzionale per scartare e facoltativamente abbattere il mio rootViewController su tabBarController. Ma piuttosto che avere istruzioni if annidate, mi piacerebbe combinarle.
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Dare combinato:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Quanto sopra fornisce l'errore di compilazione Uso dell'identificatore non risolto "tabBarController"
Semplificando:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
Ciò fornisce un errore di compilazione Il valore associato in un'associazione condizionale deve essere di tipo Facoltativo . Dopo aver tentato varie variazioni sintattiche, ciascuna restituisce un errore del compilatore diverso. Devo ancora trovare la combinazione vincente di ordine e parentesi.
Quindi, la domanda è: è possibile e, in caso affermativo, qual è la sintassi corretta?
Si noti che ho voglia di fare questo con una ifdichiarazione non una switchdichiarazione o di un ternario ?dell'operatore.
var foo : Int? = 10; if let bar = foo { if bar == 10 { println("Great success!") }}
if let bar = foo && bar == 10è Use of unresolved identifier "bar"(sul secondo bar, ovviamente).
bridgeToObjectiveCè andato in beta 5 (e probabilmente non è mai stato concepito per un uso generale). 2. Esiste comunque un firstmetodo nel Arraytipo integrato di Swift .