使用 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 - 使用 Xcode Simulator 时保存不一致
SwiftUI:如何使用 UserDefaults 保存选择器数据?