Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SwiftUI中使用UserDefaults保存/检索日期选择器?_Swift_Datepicker_Swiftui_Userdefaults_Observableobject - Fatal编程技术网

如何在SwiftUI中使用UserDefaults保存/检索日期选择器?

如何在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

我尝试使用日期选择器选择一天中的特定时间,然后一旦选择了该时间,将该时间保存为ObservedObject,并使用SwiftUI将其保存为我的用户默认值。下面代码的问题是,当数据在初始时间设置后保存时,如果时间更改,更新不会像我预期的那样显示在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")
        }
    }
}
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中保存的时间得到更新?在这里找到答案: