我对Swift 2.0的基础知识非常困惑。我有下面的代码来显示从字典到标签的姓氏字符串值。

let lastName:String? = self.userDict.objectForKey("last_name")
self.lblLastName.text = "Last Name: " + lastName!

但是有时这段代码会在值分配给self.userDict之前运行,而这段时间以上的代码会得到self.userDict.objectForKey("last_name") nil并抛出错误。

对于解决方案,我修改了我的代码,例如波纹管,并保留了该值,但编译器未将其视为有效
let lastName:String? = self.userDict.objectForKey("last_name")
self.lblLastName.text = "Last Name: " + lastName?   //--ERROR: Value of optional type 'String?' not unwrapped; did you mean to use '!' or '?'?

请建议我有效的方式来满足要求。

最佳答案

您需要提供一种方法来处理字典没有关键字"last_name"的值并返回nil的情况。最简单的方法是使用nil coalescing operator ??:

如果nil合并运算符(a ?? b)包含值,则解开可选的a;如果ba,则返回默认值nil。表达式a始终是可选类型。表达式b必须与a内部存储的类型匹配。

您可以执行以下操作:

let lastName: String = self.userDict.objectForKey("last_name") ?? "N/A"
self.lblLastName.text = "Last Name: " + lastName

关于ios - 如何在不解开可选值的情况下使用字符串变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33430289/

10-14 20:43