在我的代码中:
let userStatic:UserStaticSwift = UserStaticSwift.sharedInstance() // UserStaticSwift save the info
if userStatic.nor_businessName != "" {
self.nor_name.text = userStatic.nor_businessName
self.nor_vauth.isHidden = false
}else {
self.nor_name.text = "un bind terant"
self.nor_vauth.isHidden = true
}结果是出乎意料的:
self.nor_name.text将被设置为:"Optional(the real value)",但我希望设置为"the real value"。
但是userStatic的属性是optional,我只想要值the real value,而不是下面的值:
(lldb) po userStatic.nor_businessName
"Optional(the real value)"我如何才能取出价值,而不是Optional(value)?
编辑-3
更多信息以显示更多信息:
在@objc class UserStaticSwift:NSObject, NSCoding中
self.nor_status = UtilSwift.getIntFromAny(dic["status"] as Any)
self.nor_phone = UtilSwift.getStrFromAny(dic["phone"])
self.nor_name = UtilSwift.getStrFromAny(dic["name"])
self.nor_definition = UtilSwift.getStrFromAny(dic["definition"])
self.nor_log = UtilSwift.getStrFromAny(dic["logo"])
self.nor_businessName = UtilSwift.getStrFromAny(dic["businessName"]) // attention, is there if I use the `dic["businessName"] as Any`, then will get the Optional value, so I pass the `dic["businessName"]`在UtilSwift中
class func getStrFromAny(_ any:Any?) -> String {
if let nonNil = any, !(nonNil is NSNull) {
return String(describing: nonNil)
}
return ""
}发布于 2016-12-05 06:14:39
试试这个(加!(在可选部分):
po userStatic.nor_businessName!更新:
如果以上不适用于您,那么您应该尝试如下:
guard let value = userStatic.nor_businessName else {
print("fails");
return;
}
self.nor_name.text = value;发布于 2016-12-05 06:21:55
就像“mehul”写的。变量“解包”内容末尾的!
看来您的var不是一个可选的..。看起来,这个“可选的”-thing被添加为String。您应该看看userStatic.nor_businessName的声明。
https://stackoverflow.com/questions/40968121
复制相似问题