【发布时间】:2017-03-26 06:19:27
【问题描述】:
我使用 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()。
【问题讨论】:
-
backgroundColor是一个 optional 属性,因此String(describing: cardView.backgroundColor)给出字符串“Optional(UIExtendedGrayColorSpace 1 1)”。在将颜色保存为默认值时,您不要解开颜色。 -
当我打印
String(describing: cardView.backgroundColor)时,它不是可选的。请参阅我在 存储价值 部分中的评论 -
在您的 print 语句(第二行)中打开颜色。但不是在您将颜色存储到默认值的第一行。
-
@MartinR 做到了,谢谢。我确信我已经尝试过了。
-
@TheValyreanGroup stackoverflow.com/a/34366333/2303865