Nous savons que nous pouvons utiliser un if let
instruction comme raccourci pour vérifier un nil facultatif, puis déballer.
Cependant, je veux combiner cela avec une autre expression utilisant l'opérateur logique AND &&
.
Ainsi, par exemple, je fais ici un chaînage facultatif pour dérouler et éventuellement abaisser mon rootViewController vers tabBarController. Mais plutôt que d'avoir des instructions if imbriquées, j'aimerais les combiner.
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Dons combinés:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Ce qui précède donne l'erreur de compilation Utilisation de l'identificateur non résolu 'tabBarController'
Simplifier:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
Cela donne une erreur de compilation La valeur liée dans une liaison conditionnelle doit être de type facultatif . Après avoir tenté diverses variations syntaxiques, chacune donne une erreur de compilation différente. Je n'ai pas encore trouvé la combinaison gagnante d'ordre et de parenthèses.
Alors, la question est, est-ce possible et si oui quelle est la syntaxe correcte?
Notez que je veux faire cela avec une if
instruction et non une switch
instruction ou un ?
opérateur ternaire .
var foo : Int? = 10; if let bar = foo { if bar == 10 { println("Great success!") }}
if let bar = foo && bar == 10
est Use of unresolved identifier "bar"
(sur le second bar
, bien sûr).
bridgeToObjectiveC
est parti dans la bêta 5 (et n'a probablement jamais été destiné à un usage général). 2. Il existe de toute façon une first
méthode sur le type intégré de Swift Array
.