0
我使用的斯威夫特3和Facebook登錄,並保存一些基本的價值觀我從facebookSDKGraphrequest得到用戶的默認值是這樣的:NSUserDefaults的失去了記憶
// 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的值爲零。
嘿馬爾西奧感謝您的評論。 – makthrow
這並不能解釋爲什麼UserDefaults會失去它的數據,但它已經完全同步完好了嗎?可能發生的是我的Facebook請求失敗,我得到的值爲零,並且我在我的代碼中將默認值設置爲零。 – makthrow
你是對的,保存在磁盤上的數據不應該消失,如果缺少對'synchronize'的調用是個問題。 – Marcio