将日期选择器保存到 userdefaults 并在加载时设置值
Save datepicker to userdefaults and set value on load
更改为 UserDefaults 时尝试保存 datePicker 日期,如果此 UserDefaults 存在则设置 datePicker 日期。
我进行了研究,但我发现的一切似乎都过时了,无法正常工作。
我在设置保存的 UserDefaults 中的日期时似乎遇到了问题。很确定我做错了。我只是在学习 Xcode/Swift 如果这很明显,我深表歉意。
保存日期:
@IBOutlet weak var NotificationTime: UIDatePicker!
let notificationTimeKey = "notificationTime"
override func viewDidLoad(){
super.viewDidLoad()
//Not sure how to set the date
if let dateValue = defaults.value(forKey: notificationTimeKey){
NotificationTime.date = dateValue as! NSDate <--- Cannot assign value of type 'NSDate?' to type 'Date'
}
}
@IBAction func updateNotificationTime(_ sender: Any){
let selectedDate = NotificationTime.date
UserDefaults().set(selectedDate, forKey: notificationTimeKey)
}
从 UserDefaults 读取日期和设置日期选择器 date
的代码应该是:
if let dateValue = defaults.object(forKey: notificationTimeKey) as? Date {
NotificationTime.date = dateValue
}
切勿使用 value(forKey:)
,除非您有明确且可理解的理由使用键值编码。
并且不要在 Swift 中使用 NSDate
。
此外,变量和方法名称应以小写字母开头。您应该将您的插座命名为 notificationTime
。 Class 和结构名称以大写字母开头。
我从 'chriswaco' https://www.reddit.com/r/Xcode/comments/faxfa8/how_do_you_save_a_date_form_a_date_picker/
的 Redit 中找到了另一个类似于上述代码的答案
适用于 iOS 14 和 Xcode 12。
保存:(将其放入 DatePicker 操作函数中)
let theDate = datePicker.date
UserDefaults.standard.set( theDate, forKey:"myDateKey")
回读,即 (ViewDidLoad)
if let savedDate = UserDefaults.standard.object(forKey:"myDateKey") as? Date{
// do something with savedDate here
}
归功于 Redit 中的 chriswaco。
更改为 UserDefaults 时尝试保存 datePicker 日期,如果此 UserDefaults 存在则设置 datePicker 日期。
我进行了研究,但我发现的一切似乎都过时了,无法正常工作。
我在设置保存的 UserDefaults 中的日期时似乎遇到了问题。很确定我做错了。我只是在学习 Xcode/Swift 如果这很明显,我深表歉意。
保存日期:
@IBOutlet weak var NotificationTime: UIDatePicker!
let notificationTimeKey = "notificationTime"
override func viewDidLoad(){
super.viewDidLoad()
//Not sure how to set the date
if let dateValue = defaults.value(forKey: notificationTimeKey){
NotificationTime.date = dateValue as! NSDate <--- Cannot assign value of type 'NSDate?' to type 'Date'
}
}
@IBAction func updateNotificationTime(_ sender: Any){
let selectedDate = NotificationTime.date
UserDefaults().set(selectedDate, forKey: notificationTimeKey)
}
从 UserDefaults 读取日期和设置日期选择器 date
的代码应该是:
if let dateValue = defaults.object(forKey: notificationTimeKey) as? Date {
NotificationTime.date = dateValue
}
切勿使用 value(forKey:)
,除非您有明确且可理解的理由使用键值编码。
并且不要在 Swift 中使用 NSDate
。
此外,变量和方法名称应以小写字母开头。您应该将您的插座命名为 notificationTime
。 Class 和结构名称以大写字母开头。
我从 'chriswaco' https://www.reddit.com/r/Xcode/comments/faxfa8/how_do_you_save_a_date_form_a_date_picker/
的 Redit 中找到了另一个类似于上述代码的答案适用于 iOS 14 和 Xcode 12。
保存:(将其放入 DatePicker 操作函数中)
let theDate = datePicker.date
UserDefaults.standard.set( theDate, forKey:"myDateKey")
回读,即 (ViewDidLoad)
if let savedDate = UserDefaults.standard.object(forKey:"myDateKey") as? Date{
// do something with savedDate here
}
归功于 Redit 中的 chriswaco。