2017-05-05 12 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