ios - 将 Firestore 时间戳转换为日期数据类型

标签 ios swift firebase google-cloud-firestore

几天前,我刚刚将我的 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/

相关文章:

iOS POST 到 Rails JSON 转义不正确

iphone - iOS自定义UITableView中的滚动条

ios - 构造为 ViewModel

ios - Swift - 执行被中断,原因是 exc_bad_access 多维数组

ios - 在项目 SDK Cocoa Touch Framework 中使用 Firebase Analytics 时崩溃

ios - 当 iOS 设备锁定时,如何启用 NSURLCredentials 的访问?

ios - tableView.cellForRow(在 : indexPath) returns nil?

swift - 用动画交换 rootViewController?

javascript - 如何多次调用 sendToDevice 作为函数结果?

android - 使用 Mockito 和 Firebase 进行单元测试