【问题标题】:Firebase timestamp decodeFirebase 时间戳解码
【发布时间】:2021-11-23 03:45:29
【问题描述】:

我有以下对象:

struct CustomModel: Codable {
    var id: String?
    var creationTime: Timestamp? <-----
    var providerData: [ProviderData]?
    var uid: String?

    enum CodingKeys: String, CodingKey {
        case id
        case creationTime
        case providerData
        case uid
    }
}

解码:

JSONDecoder().decode(CustomModel.self, from: jsonData)

我在尝试解码 Firebase 时间戳时收到以下错误:

无法解析 json keyNotFound(TimestampKeys(stringValue: "seconds", intValue: nil), Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "creationTime", intValue: nil)], debugDescription: "No value与键相关 TimestampKeys(stringValue: "seconds", intValue: nil) ("seconds").", underlyingError: nil))

我正在使用 Firebase 函数与 Firebase 交互,并且我需要解码这个对象,问题是我不知道如何处理 creationTime firebase 时间戳。我不想使用 CodableFirestore 库,因为它已经过时了。 有什么建议吗?

【问题讨论】:

  • 您可以将Timestamp 模型结构添加到问题中吗?
  • 显示您阅读快照文档或同等文件的行。

标签: ios swift firebase google-cloud-firestore


【解决方案1】:

这里的问题是Timestamp 不是Codable 协议的支持类型。请记住,Timestamp 是 Firestore 自定义类型,而不是原生 Swift 类型。但是,Date 是一种原生 Swift 类型,并且受 Codable 支持,并且可以在 Timestamp 之间轻松转换。

let date = timestamp.dateValue()
let timestanmp = Timestamp(date: date)

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2018-11-20
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多