2016-07-28 2 views
-5

Я получил следующее сообщение об ошибке компилятораКак я могу использовать дополнительные цепочки разворачивать быстрые переменные

«значение необязательного типа" Строка? не развернуто, вы имели в виду использовать '!' или '?'? "

Это мой код

@IBAction func registerButtonTapped(sender: AnyObject) 
{ 
    let userEmail = userEmailTextField.text; 
    let userPassword = userPasswordTextField.text; 
    let userConfirmPassword = confirmPasswordTextField.text; 

    // check for empty fields 
    if userEmail.isEmpty || userPassword.isEmpty || userConfirmPassword.isEmpty 
    { 
     //Display alert message 
     displayMyAlertMessage("All fields are required"); 
     return; 
    } 

Ошибка показывает в строке:

if userEmail.isEmpty || userPassword.isEmpty || userConfirmPassword.isEmpty 
+0

В чем вопрос? – matt

ответ

0

Вы не разворачивали текстовые поля в своем коде.

Система не знает, есть ли текст в текстовом поле. Итак, когда вы говорите:

let userEmail = userEmailTextField.text; 
let userPassword = userPasswordTextField.text; 
let userConfirmPassword = confirmPasswordTextField.text; 

Значение в USEREMAIL, Парольпользователе и userConfirmPassword являются дополнительными строками. Для того, чтобы заставить их разворачивать, вы можете сделать следующее:

let userEmail = userEmailTextField.text!; 
let userPassword = userPasswordTextField.text!; 
let userConfirmPassword = confirmPasswordTextField.text!; 

Но, имейте в виду, что если пользователь не вводит никакого значения в текстовых полях, вы получите сбой.

Вместо силу разворачивания, вы должны использовать безопасные разворачивать, как это:

if let userEmail = userEmailTextField.text { 
    //Do something 
} else { 
    //Handle case where input is nil 
} 

Вы можете прочитать больше о их и дополнительных опциях разворачивании here.

1

кисти на Swift основы, проверить Optional Chaining руководство для помощи с такой проблемой ,

А вообще ...

Любое textField.text свойство является необязательным, то есть он может быть равен нулю.

Поэтому ваши переменные, такие как userEmail, также являются необязательными и могут быть нулевыми.

Вы не можете вызвать свойство или метод по необязательной переменной, не разворачивая ее. Есть два способа сделать это.

userEmail!.isEmpty говорит, что вы гарантируете, что USEREMAIL не ноль

userEmail?.isEmpty говорит, может быть, вы не знаете, и только проверить IsEmpty является USEREMAIL случается не быть нулевым

Вы также можете разворачивать опциональный помощью, если позволить :

if let userEmail = userEmail, userPassword = userPassword, userConfirmPassword = userConfirmPassword where userEmail.isEmpty || userPassword.isEmpty || userConfirmPassword.isEmpty { 
    //do stuff 
} 

Это лучшее короткое объяснение, которое я могу дать. Изучайте, учитесь, код.

Смежные вопросы