几天前,我刚刚将我的 firebase pod 更新到最新版本,在我的调试区域中,我收到消息说我必须将时间戳数据类型更新为日期(类似的东西,我实际上忘记了)。
而且我还必须像下面这样更改数据库设置
let db = Firestore.firestore()
let settings = db.settings
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
添加上面的代码后,我在Xcode调试区的错误信息就消失了。
据我所知,我还必须将客户端中的数据类型从 Timestamp 更改为 Date 数据类型,我没有更改它,因为 Xcode 调试区域中的错误消息已经消失。
因此,我的应用中的日期不正确。
能否请您再次分享从 TimeStamp 到 Date 的转换步骤?因为据我所知,我必须执行一些步骤才能遵循。我在 firebase 文档中找不到它。
非常感谢:)
最佳答案
这是调试器的消息
存储在 Firestore 中的系统日期对象的行为将发生变化,您的应用可能会崩溃。 要隐藏此警告并确保您的应用不会中断,您需要在调用任何其他 Cloud Firestore 方法之前将以下代码添加到您的应用中:
let db = Firestore.firestore()
let settings = db.settings
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
通过此更改,存储在 Cloud Firestore 中的时间戳将作为 Firebase 时间戳对象而不是系统日期对象读回。因此,您还需要更新期望日期的代码,而不是期望时间戳。例如:
// old:
let date: Date = documentSnapshot.get("created_at") as! Date
// new:
let timestamp: Timestamp = documentSnapshot.get("created_at") as! Timestamp
let date: Date = timestamp.dateValue()
启用新行为时,请审核 Date 的所有现有用法。在未来的版本中,该行为将更改为新行为,因此如果您不遵循这些步骤,您的应用可能会崩溃。
关于ios - 将 Firestore 时间戳转换为日期数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51008044/