在用户默认值中存储 Firestore 时间戳

Storing Firestore Timestamp in User Defaults

我是一名新 Swift 开发人员。我正在使用 Xcode 10.2 和 Swift 4.2.

我正在尝试在用户默认设置中存储 Firestore Timestamp 并检索它。我遇到的问题是我第一次检索时间戳时,它可能是零,所以我想有一个默认值。但我不知道如何将任何日期格式化为 Firestore Timestamp,因此我可以指示默认值为 2000 年 1 月 1 日。我查看了 firebase 文档,但找不到如何获取可读日期并将其格式化为一个时间戳(似乎所有方法都被 firebase 弃用了)。

这是我的代码,用于读取存储的日期并尝试使用 2000 年 1 月 1 日作为默认值,但这不起作用:

// Get a reference to a default date of January 1, 2000.
    let dateformatter = DateFormatter()
    let defaultDate = dateformatter.date(from: "01/01/2000 12:00 AM")

// Get the last date the table was updated.
    let lastDateNSData = UserDefaults.standard.object(forKey: Constants.LocalStorage.rateTableTimeStamp) as? Data
    let lastDate = NSKeyedUnarchiver.unarchiveObject(with: lastDateNSData ?? Data(Timestamp(date: defaultDate!))) as! Timestamp

我在 Data(Timestamp(date: defaultDate!)) 上收到一个错误,上面写着 'Timestamp' does not conform to expected type 'Sequence' 我认为这是因为我使用 dateformatter 格式化 defaultDate 的方式。但是我不知道还有什么办法。

如果有帮助,这里是我的代码,用于将当前日期作为时间戳写入默认值:

// Update the timestamp.
    let now = Timestamp(date: Date())
    let nsNow = NSKeyedArchiver.archivedData(withRootObject: now)
    UserDefaults.standard.set(nsNow, forKey: Constants.LocalStorage.rateTableTimeStamp)

您需要设置为object

UserDefaults.standard.set(Date(), forKey:"key")

并阅读

if let date = UserDefaults.standard.object(forKey: "key") as? Date {
   //// 
}

if UserDefaults.standard.bool(forKey: "Opened") { 
    // set date here
    UserDefaults.standard.set(true, forKey: "Opened")
}