通过didSet on@Published var将日期/时间保存到用户默认设置(来自SwiftUI的TimePicker组件)

发布时间:2022-07-21 / 作者:清心寡欲
本文介绍了通过didSet on@Published var将日期/时间保存到用户默认设置(来自SwiftUI的TimePicker组件)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试保存用户的签入时间首选项(向他们发送通知提醒)。到目前为止,我已经能够将Bool和字符串保存到UserDefaults,但我不知道如何节省时间首选项。这是我用于存储首选项的UserSetting类。

public class UserSettings: Observableobject {
    
    
    @Published var eveningCheckin: Bool {
        didSet{
            UserDefaults.standard.set(eveningCheckin, forKey: "eveningCheckin")
            print("Evening checkin toggle value in didSET to (self.eveningCheckin)")
            
        }
    }
    
    @Published var eveningCheckinTime: Date {
        didSet{
            UserDefaults.standard.set(eveningCheckinTime, forKey: "eveningCheckinTime")
            print("Evening checkin didSet to (self.eveningCheckinTime)")
        }
    }
    
    
    init() {

        self.eveningCheckin = UserDefaults.standard.object(forKey: "eveningCheckin") as? Bool ?? false
        self.eveningCheckinTime = UserDefaults.standard.object(forKey: "eveningCheckinTime") as? Date ?? Date(timeIntervalSince1970: 64800)
        print("Evening checkin time init to (self.eveningCheckinTime)")// --> To debug
        print("Evening checkin toggle value in init to (self.eveningCheckin)")
    }
}

我想用SwiftUI提供的时间选择器设置这个晚上的签到时间,如下所示。以下是我的设置和计时器视图。

import SwiftUI

struct SettingsMain: View {
    @ObservedObject var userSettings = UserSettings()
    @State private var showTimepickerEvening = false

    var body: some View {
        NavigationView{
            ScrollView {
                VStack {
                    //Evening checkins
                    Button(action: {
                        //Show 

声明:本媒体部分图片、文章来源于网络,版权归原作者所有,如有侵权,请联系QQ:330946442删除。