在 SwiftUI 中每 24 小时将变量值重置回 0

Reset variable values back to 0 in every 24hours in SwiftUI

我将 UserDefaults 与 SwiftUI 结合使用来保存来自多个变量的数据,并将这些值用于图表。我的目标是只向用户显示每天的进度,因此我需要每天从 UserDefaults 中删除存储的数据或将变量值重置回 0。 我假设 Apple Fitness 应用程序对每天重置的“Activity rings”做了类似的事情,但我不知道如何实现这样的事情。我们将不胜感激。

我的代码:

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

有任何不同的方法可以做到这一点,这取决于您的数据如何“存在”,没有更多信息我们无法具体说明。

一个选择是让你的 waterGraph 对象依赖于一个日期 WaterGraph(date: Date) 我假设 Apple 会做这样的事情。

另一种选择是在视图出现时检查并查看是否需要新数据。

.onAppear(perform: {
            if lastUpdatedDate != todaysDate{
                resetData()
                lastUpdatedDate = todaysDate
            }
        })