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

在SwiftUI中每24小时将变量值重置回0,swiftui,reset,userdefaults,Swiftui,Reset,Userdefaults,我将UserDefaults与SwiftUI结合使用,以保存来自多个变量的数据,并将这些值用于图形。我的目标是只显示用户每天的进度,因此我需要从UserDefaults中删除存储的数据,或者每天将变量值重置回0。 我想苹果健身应用程序和每天重置的“活动戒指”有类似的功能,但我不知道如何实现这样的功能。我们将不胜感激 我的代码: @Published var waterGraph: Float = UserDefaults.standard.float(forKey: "waterGra

我将UserDefaults与SwiftUI结合使用,以保存来自多个变量的数据,并将这些值用于图形。我的目标是只显示用户每天的进度,因此我需要从UserDefaults中删除存储的数据,或者每天将变量值重置回0。 我想苹果健身应用程序和每天重置的“活动戒指”有类似的功能,但我不知道如何实现这样的功能。我们将不胜感激

我的代码:

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

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

一种选择是让你的
waterGraph
对象依赖于一个日期
waterGraph(date:date)
我假设苹果会这样做

另一个选项是在视图出现时检查是否需要新数据

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

第二个选项很好,但是如何获取LastUpdateDate?您每次都会设置它。这就是
resetData()
后面的行的作用。您可以将其存储为
UserDefault