gpt4 book ai didi

ios - 如何使用 UserDefaults 从 UIDatePicker 进行存储?

转载 作者:行者123 更新时间:2023-11-30 12:57:27 25 4
gpt4 key购买 nike

我是编程和 Swift 新手。我正在构建的应用程序非常简单,我想添加一个简单的本地通知,由用户设置的 UIDatePicker 触发。我已经成功设置了通知,但我正在努力了解如何防止 UIDatePicker 在每次重新启动应用程序时重置。这是相关代码(没有 AppDelegate.swift 中发生的内容):

 @IBAction func datePicker(_ sender: UIDatePicker) {

let selectedDate = sender.date
let delegate = UIApplication.shared.delegate as? AppDelegate
delegate?.scheduleNotification(at: selectedDate)

}

最佳答案

由于Date不符合NSCoding,因此不能直接将其存储在用户默认值中。您需要将其转换为“属性列表类型”(这意味着您可以在属性列表中存储的内容的类型,IntDoubleString字典等)。在本例中,您将把 Date 转换为 Double:

let selectedDate = sender.date
let timeSince1970 = selectedDate.timeIntervalSince1970
// now we have the double value, we can store it in user defaults! :)
UserDefaults.standard.set(timeSince1970, forKey: "myDate")

编辑:

哎呀!看来我弄错了,您可以实际上可以直接在用户默认值中存储日期:

UserDefaults.standard.set(selectedDate, forKey: "myDate")

要取回存储的日期并将其设置为日期选择器的选定日期,只需在 viewDidLoad 中执行此操作:

let selectedDate = UserDefaults.standard.object(forKey: "myDate") as? Date
myDatePickerOutlet.setDate(selectedDate ?? Date(), animated: false)

如果您存储了 Double 作为日期,您可以像这样检索它:

let selectedDate = Date(
timeIntervalSince1970: UserDefaults.standard.double(forKey: "myDate"))

关于ios - 如何使用 UserDefaults 从 UIDatePicker 进行存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40270235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com