在用户默认值中存储 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")
}
我是一名新 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")
}