我对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
;如果b
是a
,则返回默认值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/