【发布时间】:2018-09-20 20:39:03
【问题描述】:
我使用此代码通过 UserDefaults 存储应用设置:
var appSettings: [String: String?] {
set { // On attempt to set new value for the dictionary
UserDefaults.standard.set(newValue, forKey: "AppSettings")
UserDefaults.standard.synchronize()
}
get { // On attempt to get something from dictionary
if let settings = UserDefaults.standard.array(forKey: "AppSettings") as? [String: String?] {
return settings
} else {
return [:]
}
}}
但是if let settings = UserDefaults.standard.array(forKey: "AppSettings") as? [String: String?] 行会导致警告:
从 '[Any]?' 投射到不相关的类型 '[String : String?]' 总是失败
任何想法如何在 UerDefaults 中保存这本字典?
【问题讨论】:
-
为什么字典的值是可选字符串?您通常会省略密钥,因此在访问该密钥时会返回
nil,因此您将使用[String:String] -
UserDefaults广泛基于 Objective-C。在 ObjC 字典中,nil值无论如何都不支持。 -
知道了,谢谢:)
标签: ios swift nsuserdefaults