我一直在使用Swift,但我仍然每天都在理解optionals
。这是我目前最难掌握的事情。
我无法解开此UserDefaults
值以不包含Optional()
周围环境。
存储值
globals.defaults.set(String(describing: cardView.backgroundColor), forKey: "bgColor")
print(String(describing: cardView.backgroundColor!))
//print this: UIExtendedGrayColorSpace 1 1
读取值
let tValues = def.string(forKey: "bgColor")!.components(separatedBy: " ")
print(tValues)
//print this: Optional(UIExtendedGrayColorSpace", "1", "1)
def
是UserDefaults.standard
的一个实例。正如你所看到的那样,当我阅读它时,我会强行打开钥匙。我已经尝试过这样做,而且也在print(tValues)!
。但它们会产生相同的结果。
如何摆脱Optional()
。
答案 0 :(得分:1)
选项可以保护我们免受Swift中nil
值的影响。它们可能很难缠绕你的头并且有时会遇到痛苦,但是把它们当作防止程序崩溃的盾牌。 从不强行打开包装。通常 是一种更好的方式。
尝试安全地展开您的UserDefaults对象,然后打印它。这样的事情应该使用if let
块。
if let tValues = def.string(forKey: "bgColor"){
//def.string(forKey: "bgColor") is now safely unwrapped
print(tValues.components(separatedBy: " "))
}