我将JSON转换为Dictionary并通过
获得了一些String title = json?.objectForKey("Titel_Live") as! String
但有时应用程序会崩溃。我无法重现此问题,只是从崩溃报告中获取信息。
有人可以帮助我并说明原因吗?感谢
答案 0 :(得分: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
}
答案 1 :(得分:1)
您不应强制转换为String。
您可以尝试: -
title = json?.objectForKey("Title_Live") as? String
(如果title是可选变量)
如果title不是可选的,那么使用:
title = (json?.objectForKey("Title_Live") as? String ?? "")
因为 objectForKey 将返回nil,如果没有值与该键相关联,则强制将nil转换为String失败并导致崩溃。