【问题标题】:Unable to get timestamp from firebase in iOS?无法从 iOS 中的 firebase 获取时间戳?
【发布时间】:2017-12-01 10:21:33
【问题描述】:

我想从 Firebase 获取当前的 UTC 时间戳。我从设备获取 UTC 时间戳,但我更改了这种方法,以便用户不使用电话时间并使用无法更改的 Firebase 时间。

我使用了下面的代码,但它没有返回时间戳。

 print("server value \(FIRServerValue.timestamp())") 

它给了我[AnyHashable(".sv"): timestamp]的价值

我也试过了

 let objectToSave = ["date": [".sv": "timestamp"]]
        print("timestamp \(objectToSave)")

现在我有两个问题:

  • 使用 Firebase 时间以使用户无法更改是否是一种好方法 设备时间?
  • 如何获取时间戳的值?

【问题讨论】:

标签: swift firebase


【解决方案1】:

所以,我将把答案分成两部分来匹配你的两个问题:

• 这是一个好方法吗?

这取决于您的应用程序做什么以及您希望它如何工作。例如,对于您可能具有玩家应该等待一小时才能再次玩游戏的功能的游戏,它实际上是通过转发其设备的时钟来击败用户“作弊”的唯一解决方案。但是,如果您的应用程序是消息应用程序或其他任何东西,您可以有两种方法:(1)您不关心什么是实时,因为您的代码可以对任何情况做出反应(未来的日期或类似的东西) , (2) 你认为它会让你的应用运行更流畅,因为你首先防止了边缘情况的发生,在这种情况下,你应该得到实时。

您可以考虑的另一个例子是 Apple 自己的应用程序。我在 MacBook 的内部时间上玩了很多,用 Xcode 和 iOS 模拟器测试我自己的应用程序在未来或过去的事件。我意识到 Xcode 甚至 Finder 都是基于 Mac 告诉他们的时间。所以我最终得到了两个月内创建的文件和 Xcode 日志。

• 如何获取时间戳值?

您似乎没有正确访问 FIRServerValue.timeStamp()。 Firebase 文档说它会这样返回:class func timestamp() -> [AnyHashable : Any]。要操纵您从 Firebase 获得的结果,我建议您查看这两个非常相似的帖子,它们更详细地处理了这个问题:

Trying to convert Firebase timestamp to NSDate in Swift

Swift 4: Firebase Timestamp

【讨论】:

    猜你喜欢
    • 2020-03-05
    • 2014-10-21
    • 1970-01-01
    • 2016-12-13
    • 2019-03-11
    • 2014-03-31
    • 1970-01-01
    • 2022-12-03
    • 2018-02-02
    相关资源
    最近更新 更多