我正在使用Swift 3和facebook登录,并保存一些基本值,我从facebookSDKGraphrequest获取用户默认值,如下所示:
// save basic settings in standard user defaults: age, gender, first name
let defaults = UserDefaults.standard
defaults.set(firstName!, forKey: "firstName")
defaults.set(gender!, forKey: "gender")
let currentUserAge = calculateAge(birthday: birthDay!)
defaults.set(currentUserAge, forKey: "age")
我只需要在用户登录时运行该代码一次,然后将信息保存到userDefaults,然后我就设置了。
所以我遇到的问题是,最近,我最近几次在手机上构建和打开我的应用程序,我的userDefaults是空的。
当我在另一个类中运行此代码时,
let defaults = UserDefaults.standard
var name = defaults.object(forKey: "firstName") as? String
var age = defaults.integer(forKey: "age")
var gender = defaults.object(forKey: "gender") as? String
我对所有这些价值观都是零。所以现在我是偏执狂,因为如果在用户的应用程序中发生这种情况,它就会崩溃。
有人可以解释为什么UserDefaults会丢失内存吗? 我没有删除或重置值。我经历了大概100次构建,最后一次,UserDefaults的值是零。
答案 0 :(得分:0)
NSUserDefaults
不会立即将其内容存储到磁盘。定期调用synchronize
方法将数据写入磁盘。在您的情况下似乎没有调用它。设置完值后,请尝试拨打defaults.synchronize
。
(来源:https://developer.apple.com/reference/foundation/userdefaults/1414005-synchronize)