Sappiamo che possiamo usare if let
un'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 if
dichiarazione non una switch
dichiarazione 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 first
metodo nel Array
tipo integrato di Swift .