gpt4 book ai didi

swift - 使用自定义解码器解码 Firestore 结构时获取 DocumentID

转载 作者:行者123 更新时间:2023-12-02 02:12:37 25 4
gpt4 key购买 nike

我有以下结构

struct Vehicle: Codable, Identifiable {
@DocumentID var id: String?
var name: String
}

只要我使用默认的 Swift 解码器,我就可以毫无问题地加载 Firestore 条目(使用 document.data(as: ),并且 id 包含文档 ID .

但是我现在需要在该结构中使用自定义解码函数,这就是问题所在。

我可以毫无问题地加载所有字段,但文档 ID 未填写。

我试过这样的:

    init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)

if let id = try container.decodeIfPresent(DocumentID<String>.self, forKey: .id) {
self.id = id.wrappedValue
}

但它给了我nil

我找到了一些其他答案,但他们谈论的是 DocumentReference,这是一种不存在(或不再存在?)的类型。

我该如何解决这个问题?

谢谢

最佳答案

使用以下方法解码文档 ID:

_id = try container.decode(DocumentID<String>.self, forKey: .id)

对于相应的变量:

@DocumentID var id: String?

这会将文档 ID 放入 ID 变量中(注意 id 前需要的“_”)。

关于swift - 使用自定义解码器解码 Firestore 结构时获取 DocumentID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67545856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com