DatePicker を使用して特定の時刻を選択しようとしています。その時刻が選択されたら、その時刻を ObservedObject として保存し、SwiftUI を使用して UserDefaults に保存します。以下の私のコードの問題は、時間の初期設定後にデータが保存される一方で、時間が変更された場合、その更新が期待どおりに DatePicker オブジェクトに表示されないことです。ここで私のコードで何が間違っているかを誰かが見るのを手伝ってもらえますか:
UserData.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")
}
}
}
AlarmSettingsView.swift
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()
}
}
}