2016-07-28 43 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,如果没有值与该键相关联,并强制将字符串转换为字符串失败并导致崩溃。