2016-07-28 10 views
0

から文字列を取得するとき、私は辞書にJSONに変換し、アプリケーションは、辞書(SWIFT)

title = json?.objectForKey("Titel_Live") as! String

しかし、アプリがクラッシュしたことになるいくつかの回でいくつかの文字列を持って墜落しました。私はこの問題を再現できません。クラッシュレポートから情報を取得するだけです。

誰かが私を助けて、理由を教えてもらえますか?おかげ

エラー行で163 enter image description here

クラッシュは、あなたが力の開封を行っているこのコード行は、(使用してキャストを強制しないでください!)原因手段である Crash reports

+5

強制的にキャストしないでください。 JSONを解析するときには、決して '! 'を使うべきではありません。 –

+1

あなたの応答は、 'key == Titel_Live' – iSashok

+2

'のようなデータを持っていないと思います!強制的にアンラップしてください。 – Buntylm

答えて

3
title = json?.objectForKey(“Titel_live”) as! String 

を報告しますキーTitel_liveのオブジェクトが見つからない場合は、オプションのチェーンやガードを使用してください。JsonTitel_liveのオブジェクトは含まれていません(スペルミスやオブジェクトがある可能性があります)。配列は1回検証されます)。

//better go like this check if exist or not. 
if let t = json?.objectForKey(“Titel_live”) { 
title = t 
} 
+0

他の理由はありますか?文字列 "Titel_Live"は常にそこにあるように見えるため、変更されませんでした。 – shilei365

+0

辞書としては存在しないかもしれません。現在、キーのオブジェクトを取得しようとしています。 – Buntylm

1

強制的に文字列に変換しないでください。

あなたが試すことができます: -

title = json?.objectForKey("Title_Live") as? String(タイトルはオプションの変数である場合) タイトルがオプションでない場合は、次に使用:

title = (json?.objectForKey("Title_Live") as? String ?? "")

を何も値がない場合objectForKeyはnilを返しますのではそのキーに関連付けられていて、文字列に強制的にキャストしないと強制的にクラッシュします。