我利用UserDefaults保存,偶爾需要被寫入到一個很小的值。我相信我已經設置正確,但我不知道爲什麼它在我退出模擬器並重新開始備份後無法工作。 的設置:儘管同步,Userdefaults值不會持續嗎?
let defaults = UserDefaults.standard
它然後寫入/修改如下:
defaults.set(true, forKey: "defaultsChecker")
defaults.synchronize()
使用打印語句,我可以看到,價值確實被零至爲真更新。然而,在再次打開模擬器(被退出後)開始檢查在viewDidLoad
值如下:
print("The value is is \((defaults.value(forKey: "defaultsChecker") as! Bool)))")
這總是在一開始返回零,這意味着它不能被保存/通過持續關閉並重新打開模擬器。不知道爲什麼會這樣。
你肯定在你重置關鍵「defaultsChecker」值的代碼沒有在哪裏? – Priyal
假設你已經檢查了鍵(「defaultsChecker」)的拼寫,你應該在整個項目搜索「defaultsChecker」,以確保它沒有被設置爲'任何地方FALSE'。順便說一句,我建議要聲明一個常量與「defaultsChecker」的值,並把它作爲一個重點來避免打字錯的錯誤,當你需要使用它... –
不要使用'值(forKey :) '從'UserDefaults'中讀取一個值,除非你明確需要使用鍵值編碼。你使用'bool(forKey :))'設置一個'Bool'來讀一個'Bool'。 – rmaddy