在特定时间从 UserDefaults 中删除保存的数据?

Delete saved data form UserDefaults at a specific time?

我将 UserDefaults 与 SwiftUI 结合使用来保存来自多个变量的数据,并将它们用于显示一些日常信息的图表。有没有办法删除或重置 UserDefaults 保存的数据以仅包含当天的数据? 例如每晚删除23:59的数据。

@Published var waterGraph: Float = UserDefaults.standard.float(forKey: "waterGraph") {
        didSet {
            UserDefaults.standard.set(self.waterGraph, forKey: "waterGraph")
        }
    }

您真的需要在恰好 23:59 从您的 UserDefaults 中删除数据吗?如果这样做,那么您将不得不 运行 后台任务,这可能会非常复杂。另一种更简单的替代方法是在用户每次打开应用程序时清除 UserDefaults,如果您的 UserDefaults 数据已存储 24 小时。在您的 UserDefaults 中存储一个名为“in24hours”的值,并将其值设置为从当前时间算起的 24 小时。在 appDelegate 的 didFinishLaunchingWithOptions 函数中,检查存储在 userDefaults“in24hours”中的日期,如果当前时间大于该变量中的时间,那么您可以在那里清除 userDefaults。您可以随时设置“in24hours”变量(在 UserDefaults 中添加要删除的数据之后)。除了将“in24Hours”设置为从当前时间和日期算起的 24 小时,您还可以将其设置为下一个日期的午夜。