2017-05-05 541 views
-2

我目前正在嘗試使用具有多個條件的if語句驗證註冊頁面。Swift:IF語句中的多個條件

與此同時,我想用正確的電子郵件格式驗證電子郵件地址。

下面是每個字段應該基本檢查。

@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) 
    } 
} 

變量isEmailAddressValid鏈接到這個功能我就this site找到。

// 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 
    } 

不過,測試時,我意識到,當我在各個領域,除了emailTextfield.text輸入一個值,然後單擊創建一個帳戶,執行該語句的else一部分。

此外,當所有字段都有值時,我會假設else部分語句將執行,但會顯示'未能創建帳戶'警報。

我在做什麼錯,需要改變什麼?

回答

3

你應該

if (!isEmailAddressValid | 
+0

這工作完全替代這部分

if (isEmailAddressValid | 

。 – daanyyaal

+2

@daanyyaal所以接受的答案 – Vyacheslav

+0

添加什麼!在前面呢?將它添加到最終力量解開。 – daanyyaal