使用 UserDefaults 保存数据的正确事件是啥?

Posted

技术标签:

【中文标题】使用 UserDefaults 保存数据的正确事件是啥?【英文标题】:What is the proper event to save data using UserDefaults?使用 UserDefaults 保存数据的正确事件是什么? 【发布时间】:2019-12-02 17:03:54 【问题描述】:

我是 ios 新手。我有一个视图控制器和一些数据对象。我想在视图控制器消失之前将数据保存到 UserDefaults。在android中,我使用了“On stop”事件等等。 ios 中的正确事件是什么?

我考虑在每次更改时保存数据 (didSet),但我的数据是包含 50-100 个元素的数组,因此每次更改时保存它可能不是一个好主意。另一方面,我希望无论如何都能保存我的数据 - 如果应用程序被破坏等等。

【问题讨论】:

您需要重写函数 viewDidDisappear 并尝试将您的数据保存到用户默认位置 【参考方案1】:

你可以在你的代码中使用这个函数

override func viewWillDisappear(_ animated: Bool) 
    super.viewWillDisappear(true)
    UserDefaults.standard.set(true, forKey: "example")

如果应用程序将终止:例如,用户关闭应用程序 在您的AppDelegate

中使用此功能
func applicationWillTerminate(_ application: UIApplication) 
     bgTask = application.beginBackgroundTask(withName:"Flink_logOut", expirationHandler: () -> Void in
         // Do something to stop our background task or the app will be killed
     
     // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.

【讨论】:

【参考方案2】:

你需要在你的视图控制器中重写这个函数

override func viewDidDisappear(_ animated: Bool) 
// save data here

【讨论】:

以上是关于使用 UserDefaults 保存数据的正确事件是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 UserDefaults 保存数组

UserDefaults - 使用 Xcode Simulator 时保存不一致

SwiftUI:如何使用 UserDefaults 保存选择器数据?

保存到 UserDefaults 被调用 19 次

如何将两个 UITextView 中的数据保存到 UserDefaults

swift 使用UserDefaults保存数据