2016-07-28 60 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目標點找不到那麼應該崩潰,更好地與可選的鏈接去或使用gaurd但肯定你的簡化版,Json包含與關鍵Titel_live任何物體(可能拼寫錯誤或對象數組驗證一次)。

//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,如果沒有值與該鍵相關聯,並強制將字符串轉換爲字符串失敗並導致崩潰。