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 ifinstruction et non une switchinstruction ou un ?opérateur ternaire .
var foo : Int? = 10; if let bar = foo { if bar == 10 { println("Great success!") }}
if let bar = foo && bar == 10est Use of unresolved identifier "bar"(sur le second bar, bien sûr).
bridgeToObjectiveCest 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 firstméthode sur le type intégré de Swift Array.