Sabemos que podemos usar uma if let
instrução como um atalho para verificar se há um nil opcional e depois desembrulhar.
No entanto, quero combinar isso com outra expressão usando o operador lógico AND &&
.
Então, por exemplo, aqui eu faço o encadeamento opcional para desempacotar e opcionalmente fazer o downcast do meu rootViewController para tabBarController. Mas, em vez de aninhar as instruções if, gostaria de combiná-las.
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Doação combinada:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
O acima dá o erro de compilação Uso do identificador não resolvido 'tabBarController'
Simplificando:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
Isso dá um erro de compilação. O valor de limite em uma associação condicional deve ser do tipo opcional . Tendo tentado várias variações sintáticas, cada uma fornece um erro de compilador diferente. Ainda estou para encontrar a combinação vencedora de ordem e parênteses.
Portanto, a questão é: é possível e, em caso afirmativo, qual é a sintaxe correta?
Observe que desejo fazer isso com uma if
declaração, não com uma switch
declaração ou com um ?
operador ternário .
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"
(no segundo bar
, é claro).
bridgeToObjectiveC
desapareceu no beta 5 (e muito possivelmente nunca foi planejado para uso geral). 2. De qualquer maneira, há um first
método no Array
tipo integrado do Swift .