Как сохранить / извлечь из DatePicker, используя UserDefaults в SwiftUI? - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь использовать DatePicker для выбора определенного c времени суток, затем, как только это время будет выбрано, сохраните время как ObservedObject и сохраните его в моих UserDefaults, используя SwiftUI. Проблема с моим кодом ниже состоит в том, что хотя данные сохраняются после первоначальной установки времени, если время изменяется, это обновление не отображается в моем объекте DatePicker, как я этого ожидаю. Может кто-нибудь помочь увидеть, что я делаю не так с моим кодом здесь:

UserData.swift

import SwiftUI

struct 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 {
    Text("\(self.userData.wakeUpTime, formatter: AlarmSettingsView2.self.dateFormatter)")
    DatePicker("Please enter time.", selection: $userData.wakeUpTime, displayedComponents: .hourAndMinute)
     .labelsHidden()
  }
}
...