2016-02-18 2 views
0

У меня есть следующий Swift функциюЗначение необязательного типа 'String?' не разворачивается; вы хотели использовать '!' или '?'? | Xcode предложение не работает

@IBAction func swapText(sender: AnyObject) { 
    if let text = textView.text, let findText = findTextField.text, 
     let replaceText = replaceTextField.text { 
     textView.text = 
      textView.text.stringByReplacingOccurrencesOfString(findTextField.text, 
      withString: replaceTextField.text, options: [], range: nil) 
     findTextField.text = nil 
     replaceTextField.text = nil 
     view.endEditing(true) 
     moveViewDown() 
    } 
} 

findTextField.text и replaceTextField.text оба дают предупреждение:

"Value of optional type 'String?' not unwrapped; did you mean to use 
'!' or '?'?" 

Использование Xcode предложил исправить это на самом деле не решает проблему ,

Я довольно новичок в Swift, поэтому любые предложения оценены.

ответ

0

Как выше ответ, но на самом деле, если вы не начать с, если пусть вам придется развернутого значения вставить '!' и конец переменной, подобный этому

if let text = textView.text, let findText = findTextField.text, 
     let replaceText = replaceTextField.text { 
     textView.text = 
      textView!.text.stringByReplacingOccurrencesOfString(findTextField!.text, 
      withString: replaceTextField!.text, options: [], range: nil) 
     findTextField.text = nil 
     replaceTextField.text = nil 
     view.endEditing(true) 
     moveViewDown() 
    } 

Вы также можете пропустить несколько впустить, если-пусть.

if let text = textView.text, findText = findTextField.text, replaceText = replaceTextField.text 
1

Вы уже развернули эти поля в вашем if let (как findText и replaceText), так что вы можете просто сделать

textView.text = 
    text.stringByReplacingOccurrencesOfString(findText, 
    withString: replaceText, options: [], range: nil) 
+0

Отлично. Работает хорошо. – ruffdrum

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

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