LeonS LeonS - 6 months ago 37
Swift Question

unwrapping multiple optionals in if statement

I want to unwrap two optionals in one if statement, but the compiler complaints about an expected expression after operator at the password constant.
What could be the reason?

if let email = self.emailField?.text && let password = self.passwordField?.text
//do smthg

Done in Swift.


Great news. Unwrapping multiple optionals in a single line is now supported in Swift 1.2 (XCode 6.3 beta, released 2/9/15).

No more tuple/switch pattern matching needed. It's actually very close to your original suggested syntax (thanks for listening, Apple!)

if let email = emailField?.text, password = passwordField?.text {


Another nice thing is you can also add where for a "guarding condition":

var email: String? = "baz@bar.com"
var name: String? = "foo"

if let n = name, e = email where contains(e, "@") {
  println("name and email exist, email has @")

Reference: XCode 6.3 Beta Release Notes