如何在Swift中将Firestore FieldValue解析为Date

Eli*_*tle 2 firebase swift google-cloud-firestore

我将文档存储在Cloud Firestore数据库的集合中。在本文档中,我想参考文档的存储时间,因此我在使用具有功能的Firestore的FieldValue对象serverTimeStamp()

我无法将客户端上的FieldValue对象解析为a Date/NSDateString。我花了一些时间阅读Firestore iOS文档,但找不到任何线索。

FieldValue从数据库到客户端没有问题,但是,我无法将类型的timeStamp转换/转换FieldValue为任何东西。

尝试转换为字符串和日期:

let timeStampString : String = message.timeStamp

let timeStampDate = Date(timeIntervalSince1970: message.timeStamp)

  • 无法将类型的值分配FieldValue给typeString
  • 无法将类型的值转换FieldValue为预期的参数类型TimeInterval(aka Double

编辑:查看道格·史蒂文森(Doug Stevenson)的答案后,处理此问题的最佳方法是在读取客户端信息时将timeStamp值转换为TimeStamp(而非FieldValue)。

let timeStamp = document["yourTimeStampKey"] as! TimeStamp
Run Code Online (Sandbox Code Playgroud)

而不是

let timeStamp = document["yourTimeStampKey"] as! FieldValue
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 6

无需解析。Firestore时间戳字段的类型为Timestamp,您应该直接使用。它代表了具有纳秒精度的时间点。

码:

let timeStamp = document["yourTimeStampKey"] as! TimeStamp
Run Code Online (Sandbox Code Playgroud)

而不是

let timeStamp = document["yourTimeStampKey"] as! FieldValue
Run Code Online (Sandbox Code Playgroud)