2017-05-05 3 views
-2

Ich versuche derzeit eine Anmeldeseite mit einer if-Anweisung mit mehreren Bedingungen zu validieren.Swift: Mehrere Bedingungen in IF-Anweisung

Gleichzeitig möchte ich die E-Mail-Adresse mit einem korrekten E-Mail-Format validieren.

Unten sollte jedes Feld im Wesentlichen überprüft werden.

@IBAction func createAccountButton(_ sender: Any) { 

    //check if textfields are empty and display alert 
    let providedEmailAddress = emailTextField.text 
    let isEmailAddressValid = isValidEmailAddress(emailAddressString: providedEmailAddress!) 


    if (isEmailAddressValid || (firstNameTextField.text?.isEmpty)! || (lastNameTextField.text?.isEmpty)! || (usernameTextField.text?.isEmpty)! || (phoneNumberTextField.text?.isEmpty)! || (passwordTextField.text?.isEmpty)!) { 
     let alertViewController = SCLAlertView().showInfo("Failed to create account", subTitle: "One or more fields are empty, please check and try again.") 
    } else { 
     SVProgressHUD.show(withStatus: "Creating account...") 
     SVProgressHUD.dismiss(withDelay: 4) 
    } 
} 

Die Variable isEmailAddressValid ist auf diese Funktion, die ich auf this site gefunden verknüpft.

// Check if email address entered is of the valid format 
    func isValidEmailAddress(emailAddressString: String) -> Bool { 

     var returnValue = true 
     let emailRegEx = "[A-Z0-9a-z.-_][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,3}" 

     do { 
      let regex = try NSRegularExpression(pattern: emailRegEx) 
      let nsString = emailAddressString as NSString 
      let results = regex.matches(in: emailAddressString, range: NSRange(location: 0, length: nsString.length)) 

      if results.count == 0 
      { 
       returnValue = false 
      } 

     } catch let error as NSError { 
      print("invalid regex: \(error.localizedDescription)") 
      returnValue = false 
     } 

     return returnValue 
    } 

jedoch bei der Prüfung erkannte ich, wenn ich einen Wert in jedem Feld mit Ausnahme des emailTextfield.text geben Sie ein Konto, das else Teil der Aussage erstellen ausgeführt wird.

Darüber hinaus, wenn alle Felder einen Wert haben, würde ich annehmen, dass der else Teil der Anweisung wird ausgeführt werden, aber die Meldung "Fehler beim Erstellen eines Kontos" wird stattdessen angezeigt.

Was mache ich falsch und was muss geändert werden?

Antwort

3

Sie sollten diesen Teil

if (isEmailAddressValid | 

mit

if (!isEmailAddressValid | 
+0

ersetzen, die perfekt funktioniert. – daanyyaal

+2

@daanyyaal so akzeptieren Sie die Antwort – Vyacheslav

+0

Was bedeutet das Hinzufügen der! an der Front tun? Hinzufügen zu der Endkraft entfaltet. – daanyyaal