【发布时间】:2021-03-21 11:20:38
【问题描述】:
我使用“UserDefaults”来存储用户重新加载页面的日期时间。但是,我发现即使时间过去了它也不会刷新
final class ModelData: ObservableObject {
@Published var lastLaunchDate: Date = UserDefaults.standard.value(forKey: "lastLaunch") as? Date ?? Date()
func getTimeStamp() -> Date {
let now_components = Calendar.current.dateComponents([.month, .day, .hour, .minute], from: Date())
let lastLaunch_components = Calendar.current.dateComponents([.month, .day, .hour, .minute], from: lastLaunchDate)
print(now_components.minute, lastLaunch_components.minute)
if now_components.minute != lastLaunch_components.minute {
lastLaunchDate = Date()
UserDefaults.standard.setValue(lastLaunchDate, forKey: "lastLaunch")
}
print(now_components.minute, lastLaunch_components.minute)
}
return lastLaunchDate
}
}
由于我正在测试,我使用“分钟”来简化我的测试。我希望当分钟发生变化时,上面的代码会更新我的 userDefaults。
struct HomeView: View {
@EnvironmentObject var modelData: ModelData
var body: some View {
Text("\(modelData.getTimeStamp())")
}
}
我发现我浏览到另一个页面,返回 HomeView。时间戳根本没有得到更新。我打印了 lastLaunchDate,它也没有更新。
【问题讨论】:
-
这是否回答了您的问题stackoverflow.com/a/62716736/12299030?
标签: ios swift date swiftui userdefaults