Pour passer à l'écran suivant, un patron
doit avoir un des deux identifiants. Le code que je dois faire est:Expression booléenne Swift-y - case outside if/switch
let identifier1Entered = !patron.identifier1.isEmpty
let identifier2Entered = patron.identifier2 != nil && !patron.identifier2!.isEmpty
guard identifier1Entered || identifier2Entered else { return }
Mais ce n'est pas Swifty, je suis force déballant l'option identifier2
, parce que je ne veux pas d'étendre à un plus, et l'OMI messier
var identifier2Entered = false
if let identifier2 = patron.identifier2 where !identifier2.isEmpty {
identifier2Entered = true
}
Ce que je pensais peut travailler est en train de prendre l'expression de la déclaration if
, comme:
let id2Entered = let identifier2 = patron.identifier2 where !identifier2.isEmpty
ou
let id2Entered = case .Some(let id2) = patron.identifier2 where !id2.isEmpty
Mais il semble que ces expressions ne sont autorisées que dans les instructions if
. L'autre solution plus Swifty je pensais est la suivante:
let identifier1Entered = !patron.identifier1.isEmpty
guard let id2 = patron.identifier2 where !id2.isEmpty || identifier1Entered
else { return }
Mais il faut que identificateur2 non nul, ce qui est incorrect, et pour autant que je sache, il n'y a aucun moyen d'utiliser en option la liaison avec ||
dans if
ou guard
déclarations. Sans parler du fait que je pense que c'est moins clair et moins lisible que le déballage forcé.
Quelqu'un at-il une solution claire, plus Swifty?
doh! Aimez la première réponse – Austin