我想创建一个AppSettings类来将用户设置存储在用户字典中。我的AppSettings类:Swift Singleton类来存储用户设置
class AppSettings : NSObject
{
static var user: [String: Any]?
static let sharedSingleton : AppSettings = {
let instance = AppSettings()
return instance
}()
var userID: String?
var baseUrl: String?
override private init() {
super.init()
let userDefaults = UserDefaults.standard
AppSettings.user = userDefaults.object(forKey: "user") as! [String : Any]?
print(AppSettings.user ?? "User Defaults has no values")
self.saveSettings()
}
func saveSettings()
{
let userDefaults = UserDefaults.standard
if((AppSettings.user) != nil)
{
userDefaults.set(AppSettings.user, forKey: "user")
}
userDefaults.synchronize()
}
}
我这种方式存储用户的值:
AppSettings.user?["User_ID"] = String(describing: dictionary["User_ID"])
AppSettings.sharedSingleton.saveSettings()
let defaults = UserDefaults.standard.object(forKey: "user")
print(defaults ?? "User is null")
这表明,用户为空。怎么了?
当您打印它时,您的AppSettings.user是否有内容,或者您得到“用户默认值没有值”? –
我得到“用户默认值没有值”。我无法添加值 –
您从未为关键“用户”设置任何数据。您尝试获取对象,但是您从不设置它,因此它将返回零。当你试图保存它时,你会检查零,这总是零,所以你永远不会保存它。所以你至少需要在某处初始化一个“用户”对象。 –