2016-03-30 26 views
1

私はまだ実際には選択肢の周りを頭で囲んでいます。 いくつかのtextFieldを記入することができないユーザーフォームが作成されています(ユーザーの姓または名字)。テキストフィールド入力のオプション

私の思考、それは次のように処理する必要がありますされています

@IBAction func signUpButtonTapped(sender: AnyObject) { 

    // Get information from register form 
    let userEmail: String 
    let userPassword: String 
    let userPasswordRepeat: String 
    let userFirstName: String? 
    let userLastName: String? 

    guard let email = userEmailAddressTextField.text, 
    let password = userPasswordTextField.text, 
    let passwordRepeat = userPasswordRepeatTextField.text else { 
     return 
    } 

    userEmail = email 
    userPassword = password 
    userPasswordRepeat = passwordRepeat 

    if let firstName = userFirstNameTextField.text, let lastName = userEmailAddressTextField.text { 
     userFirstName = firstName 
     userLastName = lastName 
    } 


    // Check if password is the same when registering 
    if (userPassword != userPasswordRepeat) { 
     displayAlertViewController(title: "Alert", message: "Passwords do not match") 
     return 
    } 

    // If email, password, first name or last name is missing display alert 
    if(userEmail.isEmpty || userPassword.isEmpty) { 
     displayAlertViewController(title: "Alert", message: "All fields need to be filled in.") 

     return 
    } 
} 

しかし、それはuserFirstNameとuserLastNameが使用されることはありませんことを、私に語りました。私の質問は次のとおりです:

オプションバインディングを使用して割り当てた場合、なぜ使用されませんか?これはテキストフィールドのデータを解析する正しい方法ですか、このコードを合理化するにはどうすればよいですか?

答えて

0

userFirstNameは省略可能ですが、userFirstNameTextField.textがnilでない場合にのみ値を与えて、そのオプションの意味を失います。それがnilである場合は、チェックせずに割り当てる必要があります。この場合 そう

userFirstName = userPasswordRepeatTextField.text 

userFirstNameは単なる文字列でなければなりません

+0

多分私は何かが足りない...しかし、午前私はこれを行うだろうというとき: 'userFirstName = userFirstNameTextField.text 'ユーザーが名前をつけると、まだアンラップされた文字列です。 – sesc360

+0

だから私はオプションのバインディングを使用して値をアンラップする必要があると思った。 – sesc360

+0

@ sesc360この回答をチェックしてくださいhttp://stackoverflow.com/questions/24003642/what-is-an-optional-value-in-swift –

関連する問題