尝试在更改为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)
}
答案 0 :(得分:1)
您从UserDefaults读取日期并设置日期选择器date
的代码应为:
if let dateValue = defaults.object(forKey: notificationTimeKey) as? Date {
NotificationTime.date = dateValue
}
除非您有清楚明了的理由使用键值编码,否则请勿使用value(forKey:)
。
并且不要在Swift中使用NSDate
。
此外,变量和方法名称应以小写字母开头。您应该为您的插座notificationTime
命名。类和结构名称以大写字母开头。
答案 1 :(得分:0)
我从'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提供信用。