Swift 如何在userdefaults中存储日期?
我想记录她进入文本字段的历史记录。我打算用UserDefaults注册它。但当我尝试使用UserDefaults保存它时,“无法将'nsdate'类型的值分配给'String'类型”错误。我认为它不接受文本字段数据,因为它是字符串。我怎样才能记住历史呢 formatteddate和formatteddate2给出了此错误。日期输出如下:20/04/2019 20:23Swift 如何在userdefaults中存储日期?,swift,date,Swift,Date,我想记录她进入文本字段的历史记录。我打算用UserDefaults注册它。但当我尝试使用UserDefaults保存它时,“无法将'nsdate'类型的值分配给'String'类型”错误。我认为它不接受文本字段数据,因为它是字符串。我怎样才能记住历史呢 formatteddate和formatteddate2给出了此错误。日期输出如下:20/04/2019 20:23 let token = try? keychain.getString("chipnumbernew") chi
let token = try? keychain.getString("chipnumbernew")
chip1InfoString = token
var time = NSDate()
var formatter = DateFormatter()
formatter.dateFormat = "dd/MM/yyyy HH:mm"
var formatteddate = formatter.string(from: time as Date)
var formatteddate2 = formatter.string(from: time as Date)
timertextNew.text = formatteddate
timertext2New.text = formatteddate2
let RetrivedDate = UserDefaults.standard.object(forKey: "timertext") as? NSDate
formatteddate = RetrivedDate
let RetrivedDate2 = UserDefaults.standard.object(forKey: "timertext2") as? NSDate
formatteddate2 = RetrivedDate2
您的问题是,您正在从用户默认存储中检索NSDate,然后试图将其分配给字符串(formatteddate) 试试这个
formatteddate = formatter.string(from: RetrivedDate as Date)
如果只想显示日期值,则可以将其转换并存储为字符串,否则在读取日期值后将其转换/格式化,无论哪种方式,都应确保在保存和读取日期值时使用相同的类型
//save as Date
UserDefaults.standard.set(Date(), forKey: key)
//read
let date = UserDefaults.standard.object(forKey: key) as! Date
let df = DateFormatter()
df.dateFormat = "dd/MM/yyyy HH:mm"
print(df.string(from: date))
下面将
日期
对象保存为双精度
(又称时间间隔
)。这避免了任何日期格式。格式设置可能会失去精度,而且不必要,因为字符串不是供用户读取的
// save
UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: key)
// read
let date = Date(timeIntervalSince1970: UserDefaults.standard.double(forKey: key))
我必须把它放在绳子上,可以把它记在记忆里。
// save
UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: key)
// read
let date = Date(timeIntervalSince1970: UserDefaults.standard.double(forKey: key))