从 UserDefualts 设置 UILabel
Setting UILabel from UserDefualts
我已经使用 UserDefaults 保存了一个日期,我的值也被保存了,我试图在我的视图控制器中将我保存的日期显示为一个字符串,但它显示为空白。我执行错了吗?
@IBOutlet weak var timeLabel: UILabel!
let formatter = DateFormatter()
func savedate(){
UserDefaults.standard.set(datePicker.date, forKey: keyDate)
}
func loadDate(animation: Bool) {
guard let loadedDate = UserDefaults.standard.object(forKey: keyDate) as? Date else { return }
datePicker.setDate(loadedDate, animated: true)
print(loadedDate)
let loadedValue = formatter.string(from: loadedDate)
timeLabel.text = loadedValue
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
loadDate(animation: true)
}
@IBAction func saveTimeValue(_ sender: Any) {
saveDate()
}
您的问题是您没有设置日期格式选项。因为它会 return 任何日期的空字符串:
尝试
let formatter = DateFormatter()
formatter.string(from: Date()) // ""
要使用本地化说明正确设置日期格式,您可以查看此 answer。
我已经使用 UserDefaults 保存了一个日期,我的值也被保存了,我试图在我的视图控制器中将我保存的日期显示为一个字符串,但它显示为空白。我执行错了吗?
@IBOutlet weak var timeLabel: UILabel!
let formatter = DateFormatter()
func savedate(){
UserDefaults.standard.set(datePicker.date, forKey: keyDate)
}
func loadDate(animation: Bool) {
guard let loadedDate = UserDefaults.standard.object(forKey: keyDate) as? Date else { return }
datePicker.setDate(loadedDate, animated: true)
print(loadedDate)
let loadedValue = formatter.string(from: loadedDate)
timeLabel.text = loadedValue
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
loadDate(animation: true)
}
@IBAction func saveTimeValue(_ sender: Any) {
saveDate()
}
您的问题是您没有设置日期格式选项。因为它会 return 任何日期的空字符串:
尝试
let formatter = DateFormatter()
formatter.string(from: Date()) // ""
要使用本地化说明正确设置日期格式,您可以查看此 answer。