如何处理缺少键的字典

时间:2015-11-15 11:11:17

标签: ios

我有一个字典,其中包含我需要在tableView中使用的信息(名称,年龄等)来填充配置文件viewController。

我的问题是我不知道用户是否添加了他的名字,因此是否有一个key =“name”。 所以当我索引到字典

print("firstname: \(userDocument["name"]!["first"] as! String)")

如果密钥不存在,应用程序会崩溃..

我该如何避免这种情况?如果按下所有按键我应该使用吗?

我试过了:

print("firstname: \(userDocument["name"]?["first"] as? String)")

然后我得到了Optional(Elon Musk),我不认为那是label.text。

非常感谢任何帮助!谢谢

2 个答案:

答案 0 :(得分:3)

怎么样:

var defaultName = "unspecified"
print("firstname: \((userDocument["name"]?["first"] as? String) ?? defaultName)")

这会检查(userDocument["name"]?["first"] as? String)是否包含值,如果没有,则提供替换(defaultName)。您可以将替代文本更改为您认为合适的文本。

答案 1 :(得分:1)

!意思是“如果它不存在,请崩溃”。所以你写的是崩溃,因为你告诉编译器让它崩溃。如果您不想要崩溃,请不要这样做。

使用?在适当的地方,它会给你一个可选的价值。然后你可以使用可选的? defaultValue在可选项为nil时替换值,或者如果值不存在则执行任何适当的操作。