2016-05-16 4 views
-7

Value of optional type 'String?' not unwrapped; did you mean to use '!' or '?' Using Parse In Swift 2.0Swift 2.0チェックを解除するには?

iは

価値オプションの種類のエラーが...私は、トピックを発見したが、それはないと同じだと思われる「文字列を?」アンラップされていない。 '!'を使用することを意味しましたか?または '?'?

func textFieldDidEndEditing(textField: UITextField) 
    { 
      if textField.text.isEmpty || count(textField.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())) 
    == 0 
      { 
       textField.attributedPlaceholder = NSAttributedString(string: Messages.conversationNamePlaceholder.rawValue, 
        attributes:[NSForegroundColorAttributeName: UIColor.blackColor().colorWithAlphaComponent(0.54)]) 
      } 
    } 
+1

質問を再フォーマットしてください。 – Klevison

+0

オプションの値について学ぶ必要がありますhttp://stackoverflow.com/q/24003642/1959140 –

+0

[オプションの値の型]の重複があります。[[![画像の説明を入力してください] [1]] [1]文字列? 'アンラップされていない。あなたは '!'を使うつもりでしたか?または '?' Parse In Swift 2.0を使用する](http://stackoverflow.com/questions/33159412/value-of-optional-type-string-not-unwrapped-did-you-mean-to-use-or-u) – Slayter

答えて

2

ここでの問題は、オプションの-包まれた文字列「textfield.text」にする方法「のisEmpty」を適用しようとしているということです。

次であなたのif文を置き換える必要があります。テキストフィールドのテキストがnilできるため

if textField.text?.isEmpty || count(textField.text?.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())) 

テキストはテキストフィールドにオプションです!オプションのオブジェクトをアンラップする際に注意してください!あなたは基本ケースを提供したい場合は

あなたはこのような何かをすることができます。

let text = textfield.text? ?? "" 

次に、あなたは、この変数をtextfield.textのすべての出現を置き換えることができますし、それがnilになることはありませんしてください!

+0

'! 'で可能な限り強制的にアンラップしないようにしてください。 – catalandres

+0

合意!私はこれを最後にコメントしましたが、私は私の答えを改善します。 –

+0

また、状況を見てみましょう。私はそれを単純化できると思います。 – catalandres

1

The!記号は避けるべきですので、私は通常このようなものに行きます:

if textField.text?.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).characters.count > 0 { 
    ... 
} 

!オプションの値をアンラップしますが、値がnilの場合、致命的なエラーが発生してアプリがクラッシュします。

関連する問題