我使用此代码通过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?]
行会引起警告:
从“ [任何]开始”?无关类型“ [String:String?]”总是失败
有什么想法如何在UerDefaults中保存该词典?
答案 0 :(得分:4)
替换此
UserDefaults.standard.array(forKey: "AppSettings") as? [String: String?]
使用
UserDefaults.standard.dictionary(forKey: "AppSettings") as? [String: String?]
在存储字典时,请不要使用.array(forKey
来返回肯定会被强制转换为[Any]?
的{{1}}
也来自Docs
synchronize()
等待对默认数据库的任何未决异步更新并返回;此方法是不必要的,不应使用。
所以发表评论
[String:String?]