0

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()
        }
    }
}
4

0 に答える 0