Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在userdefaults中存储日期?_Swift_Date - Fatal编程技术网

Swift 如何在userdefaults中存储日期?

Swift 如何在userdefaults中存储日期?,swift,date,Swift,Date,我想记录她进入文本字段的历史记录。我打算用UserDefaults注册它。但当我尝试使用UserDefaults保存它时,“无法将'nsdate'类型的值分配给'String'类型”错误。我认为它不接受文本字段数据,因为它是字符串。我怎样才能记住历史呢 formatteddate和formatteddate2给出了此错误。日期输出如下:20/04/2019 20:23 let token = try? keychain.getString("chipnumbernew") chi

我想记录她进入文本字段的历史记录。我打算用UserDefaults注册它。但当我尝试使用UserDefaults保存它时,“无法将'nsdate'类型的值分配给'String'类型”错误。我认为它不接受文本字段数据,因为它是字符串。我怎样才能记住历史呢

formatteddate和formatteddate2给出了此错误。日期输出如下:20/04/2019 20:23

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))