Ios 从“[Any]?”转换为不相关的类型“[String:String?]”总是失败
我使用此代码通过UserDefault存储应用程序设置:Ios 从“[Any]?”转换为不相关的类型“[String:String?]”总是失败,ios,swift,nsuserdefaults,Ios,Swift,Nsuserdefaults,我使用此代码通过UserDefault存储应用程序设置: var appSettings: [String: String?] { set { // On attempt to set new value for the dictionary UserDefaults.standard.set(newValue, forKey: "AppSettings") UserDefaults.standard.synchronize() } ge
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 [:]
}
}}
但是如果let settings=UserDefaults.standard.arrayWorkey:AppSettings为?[字符串:字符串?]导致警告:
从“[Any]?”转换为不相关类型“[String:String?]”总是失败
你知道如何用默认值保存这本词典吗?替换它
UserDefaults.standard.array(forKey: "AppSettings") as? [String: String?]
与
在存储字典时,不要使用返回[Any]的.arrayWorkey?当然不能将其转换为[String:String?]
也来自
同步化
等待对默认数据库的任何挂起的异步更新并返回;这种方法是不必要的,不应该使用
所以评论
UserDefaults.standard.synchronize()
替换这个
UserDefaults.standard.array(forKey: "AppSettings") as? [String: String?]
与
在存储字典时,不要使用返回[Any]的.arrayWorkey?当然不能将其转换为[String:String?]
也来自
同步化
等待对默认数据库的任何挂起的异步更新并返回;这种方法是不必要的,不应该使用
所以评论
UserDefaults.standard.synchronize()
为什么字典的值是可选字符串?通常情况下,您只需省略该键,因此在访问该键时返回nil,因此您将使用[String:String]UserDefaults,它广泛基于Objective-C。在ObjC字典中,无论如何都不支持nil值。明白了,谢谢:为什么字典的值是可选字符串?通常情况下,您只需省略该键,因此在访问该键时返回nil,因此您将使用[String:String]UserDefaults,它广泛基于Objective-C。在ObjC字典中,无论如何都不支持零值。明白了,谢谢: