2016-01-15 3 views
0

Моего ViewControllerSwift значения текстового поля прибудет surounded опциональным()

/ MARK: Properties 
@IBOutlet weak var textInput: UITextField! 

@IBOutlet weak var labelTop: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad()   
    textInput.delegate = self 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// MARK: UITextFieldDelegate 
func textFieldShouldReturn(textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 
    return true 
} 

func textFieldDidEndEditing(textField: UITextField) { 
    if (textInput != nil){ 
     labelTop.text = "Searching for \(textField.text)" 
     textInput.enabled = false 
    }       
} 

Когда я нажимаю возврат на текстовом поле Кодекса

labelTop.text = "Searching for \(textField.text)" 

называется. Однако текст labelTop выглядит следующим образом:

Поиск Optional («текст»)

Я смотрел на опциях (в большинстве случаев они используют вместо правильно?!?), Но не понимает, как Я должен получить значение без окружающего «Необязательный (« »)«

+0

вы также можете использовать nil-коалесцирующий оператор, чтобы развернуть его без необходимости, если условные скобки просто используют 'textInput.text ?? "" ' –

+0

проверить этот ответ http://stackoverflow.com/a/34294660/2303865 –

ответ

1

Вам необходимо развернуть необязательное значение.

if let text = textInput?.text { 
    labelTop.text = text 
    textInput.enabled = false 
}  
+0

Но я думал, что вам не нужно разворачивать неявно развернутые опции https://developer.apple.com/library/ios/documentation/ Swift/Conceptual/Swift_Programming_Language/TheBasics.html # // apple_ref/doc/uid/TP40014097-CH5-ID334 –

+1

Правильно, но свойство 'text'' UITextField' также является 'Optional', и это ** не **' Implicity Unwrapped'. Поэтому его нужно развернуть. –

+0

Ах спасибо, я предположил, что есть какое-то наследство при разворачивании –

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