从 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