LeonS LeonS - 1 year ago 95
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.

Answer Source

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

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download