Sabemos que podemos usar una if let
declaración como una abreviatura para verificar un nulo opcional y luego desenvolverlo.
Sin embargo, quiero combinar eso con otra expresión usando el operador lógico AND &&
.
Entonces, por ejemplo, aquí hago un encadenamiento opcional para desenvolver y, opcionalmente, bajar mi rootViewController a tabBarController. Pero en lugar de anidar declaraciones if, me gustaría combinarlas.
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Donaciones combinadas:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Lo anterior da el error de compilación Uso del identificador no resuelto 'tabBarController'
Simplificando:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
Esto da un error de compilación. El valor enlazado en un enlace condicional debe ser de tipo opcional . Después de haber intentado varias variaciones sintácticas, cada una da un error de compilación diferente. Todavía tengo que encontrar la combinación ganadora de orden y paréntesis.
Entonces, la pregunta es, ¿es posible y, de ser así, cuál es la sintaxis correcta?
Tenga en cuenta que quiero hacer esto con una if
declaración, no una switch
declaración o un ?
operador ternario .
var foo : Int? = 10; if let bar = foo { if bar == 10 { println("Great success!") }}
if let bar = foo && bar == 10
es Use of unresolved identifier "bar"
(en el segundo bar
, por supuesto).
bridgeToObjectiveC
está en la versión beta 5 (y posiblemente nunca fue diseñado para uso general). 2. De todos modos, existe un first
método en el tipo integrado de Swift Array
.