Userdefaults 不会加载或保存

Posted

技术标签:

【中文标题】Userdefaults 不会加载或保存【英文标题】:Userdefaults doesn't load or save 【发布时间】:2020-09-13 16:25:38 【问题描述】:

UserDefaults 有一个奇怪的问题:有时它可以保存和加载,但有时它不起作用。

class ViewController: UIViewController 

    @IBOutlet var text: UITextField!
    var savedArray : [String] = []
    override func viewDidLoad() 
        super.viewDidLoad()
        savedArray = UserDefaults.standard.object(forKey: "arr") as? [String] ?? [String]()
        print (savedArray)
    


    @IBAction func btn(_ sender: Any) 
        savedArray.append(text.text!)
        UserDefaults.standard.set(savedArray, forKey: "arr")
    
    

【问题讨论】:

如果您快速关闭应用程序,我相信它有时可能无法在您的模拟器上运行。这是因为在模拟器上,ios 的默认方法(用于保存状态)的调用方式不同。在设备上就可以了。 【参考方案1】:

尝试在set 之后调用UserDefaults.standard.synchronize()。 Apple 不推荐这样做,但有时是必要的。

【讨论】:

以上是关于Userdefaults 不会加载或保存的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UserDefaults 中重置“AppleLanguages”键的值

在 Userdefaults 中保存状态

UserDefaults 不会在应用程序关闭并重新打开后保存数据

从 UserDefaults 获得的布尔值打印为 0 或 1,即使保存为 Any

从 UserDefaults 保存/获取 UIColor

立即加载 UserDefaults(应用存储)