DataPicker格式错误

-1 nsuserdefaults datapicker swift

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm "

let selectedDate = dateFormatter.string(from: sender.date)

UserDefaults.standard.set(selectedDate, forKey: "date")
print(selectedDate)

\\method to reload the selected time inside the viewdidLoad func

let selectedDate = UserDefaults.standard.object(forKey: "date")
example.setDate(selectedDate as! Date ?? Date(), animated: false)
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,它会返回此错误

无法将类型'__NSCFString'(0x108e8b4f0)的值转换为'NSDate'(0x108e8c0d0).

我转换为HH:mm因为我想只记录这种格式的时间,但我不知道我将如何处理它

Ami*_*han 5

安德烈你保存字符串值UserDefaults并尝试NSDate从字符串设置.如果您只关心时间,那么我的建议是保存日期,UserDefaultstime根据您的要求获得格式.

以下是保存和检索时间的步骤:

保存:

   func datePickerChanged(_ sender: UIDatePicker){

    UserDefaults.standard.set(sender.date, forKey: "date")

}
Run Code Online (Sandbox Code Playgroud)

用于检索:

 func getTime(){

    let date = UserDefaults.standard.object(forKey: "date") as! Date

    let dateFormatter = DateFormatter()
    dateFormatter.locale = NSLocale.current
    dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone! //Set your own time zone here.

    dateFormatter.dateFormat = "HH:mm"

    print(dateFormatter.string(from: date as Date))

    example.setDate(date, animated: false)

}
Run Code Online (Sandbox Code Playgroud)

希望它能帮到你,节省你的时间.