【发布时间】:2019-04-29 19:53:36
【问题描述】:
我有一个字典,它是 [String: Bookmark],但 createdAt 保存为 Timestamp,解码器在尝试理解 Date 时抛出错误
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON 写入 (__NSDate) 中的类型无效”
struct Bookmark: Decodable {
let messageId: String
let messageCreatedAt: Date
}
JSONDecoder().decode([String: Bookmark].self, data: data)
有没有办法让 Swift 的 Decodable 协议与 Firestore 时间戳很好地配合?
编辑:
如果我打印 [String: Any] 然后尝试像这样在控制台中解码
▿ 1 : 2 elements
- key : "messageCreatedAt"
- value : 2018-11-27 20:59:11 +0000
po valueDict["messageCreatedAt"] as? Date
我明白了
▿ Optional<Date>
▿ some : 2018-11-27 20:59:11 +0000
- timeIntervalSinceReferenceDate : 565045151.531769
那么它一定是Decodable 中的某些东西,那么它无法识别和解析它?
编辑:
JSON 是
{
"messageId": "abc123",
"messageCreatedAt": "2018-11-27 20:59:11 +0000"
}
【问题讨论】:
-
请在问题中添加您尝试解析的 JSON。
-
@user28434 添加了 json
-
已修复。日期在引号中
-
已修复。 json 来自 firestore,而不是一个人创建的 fwiw
标签: ios swift firebase google-cloud-firestore