2016-07-19 13 views
-2

私はそこではありません辞書から値を読んだとき、私はそう、クラッシュを取得する:私がしようとした場合ので、私は、? or !を必要とするので辞書キーからnilの値を読み取っていますか?

let state:NSString = module["state"] as! NSString 

は、クラッシュした:

let state:NSString = module!["state"] as! NSString 
//or 
let state:NSString = module?["state"] as! NSString 

私はコンパイラからエラーを取得して削除する必要がある?/!

これはどうやって正しく行うのですか?

+8

(ほとんど)「!」はすべて悪です。 Lookup "オプションバインディング"。 –

答えて

1

オプションのバインドを使用すると便利です。

if let state = module["state"] as? NSString { 
    // do something with state 
} 

// else the value was nil 

または、コメントに示唆されているように、guardステートメントを使用できます。

+0

ありがとう、と私は状態を宣言する必要があるとしばらくして私はそれを使用することができますか?私は{}できますか?私は安全な宣言を得るでしょうか? – Curnelious

+0

実際には「オプションバインディング」と呼ばれています:) –

+0

固定@MartinR! – Rohan

関連する問題