如何在SwiftUI中使用UserDefaults保存/检索日期选择器?
我尝试使用日期选择器选择一天中的特定时间,然后一旦选择了该时间,将该时间保存为ObservedObject,并使用SwiftUI将其保存为我的用户默认值。下面代码的问题是,当数据在初始时间设置后保存时,如果时间更改,更新不会像我预期的那样显示在DatePicker对象中。有人能帮我看看我的代码有什么问题吗 UserData.swift如何在SwiftUI中使用UserDefaults保存/检索日期选择器?,swift,datepicker,swiftui,userdefaults,observableobject,Swift,Datepicker,Swiftui,Userdefaults,Observableobject,我尝试使用日期选择器选择一天中的特定时间,然后一旦选择了该时间,将该时间保存为ObservedObject,并使用SwiftUI将其保存为我的用户默认值。下面代码的问题是,当数据在初始时间设置后保存时,如果时间更改,更新不会像我预期的那样显示在DatePicker对象中。有人能帮我看看我的代码有什么问题吗 UserData.swift import SwiftUI class UserData: ObservableObject { @Published var wakeUpTime: Da
import SwiftUI
class UserData: ObservableObject {
@Published var wakeUpTime: Date = UserDefaults.standard.object(forKey: "wakeUpTime") as? Date ?? Date() {
didSet {
UserDefaults.standard.set(self.wakeUpTime, forKey: "wakeUpTime")
}
}
}
import SwiftUI
struct AlarmSettingsView: View {
static var dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "hh:mm a"
return formatter
}()
@ObservedObject var userData = UserData()
var body: some View {
VStack {
Text("\(self.userData.wakeUpTime, formatter: AlarmSettingsView.self.dateFormatter)")
DatePicker("Please enter time.", selection: $userData.wakeUpTime, displayedComponents: .hourAndMinute)
.labelsHidden()
}
}
}
报警设置视图.swift
import SwiftUI
class UserData: ObservableObject {
@Published var wakeUpTime: Date = UserDefaults.standard.object(forKey: "wakeUpTime") as? Date ?? Date() {
didSet {
UserDefaults.standard.set(self.wakeUpTime, forKey: "wakeUpTime")
}
}
}
import SwiftUI
struct AlarmSettingsView: View {
static var dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "hh:mm a"
return formatter
}()
@ObservedObject var userData = UserData()
var body: some View {
VStack {
Text("\(self.userData.wakeUpTime, formatter: AlarmSettingsView.self.dateFormatter)")
DatePicker("Please enter time.", selection: $userData.wakeUpTime, displayedComponents: .hourAndMinute)
.labelsHidden()
}
}
}
当用户使用选择器更改时间时,这就是我想要传达的意思。那么我应该如何更改它,以便当用户使用日期选择器更改时间时,UserDefaults中保存的时间得到更新?在这里找到答案: