Swift - 未展开的字符串仍然显示为可选

时间:2016-11-11 23:28:05

标签: swift swift3

我一直在使用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)

defUserDefaults.standard的一个实例。正如你所看到的那样,当我阅读它时,我会强行打开钥匙。我已经尝试过这样做,而且也在print(tValues)!。但它们会产生相同的结果。

如何摆脱Optional()

1 个答案:

答案 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: " ")) }