我知道安全展开如下
var firstName:String?
if let firstName = firstName
{
dictionary.setObject(firstName, forKey: "firstName")
}
else
{
dictionary.setObject("", forKey: "firstName")
}
我想在字典中添加firstname,即使它也是nil。我将在字典中有10-15个var。 我不想为耳朵检查这种情况10-15次。 我在整个项目中拥有超过1000个选项。
因此,编写一个函数的想法将帮助我复制代码并减少行数。 所以实现了这个功能如下。
func checkNull(str:String) -> String
{
return str.characters.count > 0 ? "\(str)" : ""
}
但在调用func时,
let addressstr = self.checkNull(address?.firstName)
firstname是这里的var in address模型。 汽车修正建议
let addressstr = self.checkNull((address?.firstName)!)
以上行导致崩溃。
答案 0 :(得分:3)
首先firstName
是Optional
,因此您无法将其传递给只需String
的函数。
另外这一行:
str.characters.count > 0 ? "\(str)" : ""
相当于只返回str
,因此您不会检查它是否为Optional
。
在这种情况下,使用nil coalescing operator:
会更容易let addressstr = address?.firstName ?? ""
如果address
不是,则firstName
将被解包并绑定到addressstr
。否则,此字符串将分配给它:""