gpt4 book ai didi

ios - 使用 Swift Codable 解码 firestore 文档时获取文档 ID

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

我正在使用一个类来解码检索到的 firestore 文档,如果我不想操作数据,它会按预期工作:

class Room: Identifiable, Codable {

@DocumentID public var id:String?
var name:String

}

但是,如果我尝试使用自己的 init 来设置值,我无法获取 firestore 文档 ID?

class Room: Identifiable, Codable {

@DocumentID public var id:String?
var name:String


enum Keys:String, CodingKey {
case name
case capacity
case photo = "url"
}

required init(from decoder: Decoder) throws {

// How do I get the document ID to set the id value?

let container = try decoder.container(keyedBy: Keys.self)
name = try container.decode(String.self, forKey: .name)
capacity = try container.decode(Int.self, forKey: .capacity)
photo = try container.decode(String.self, forKey: .photo)

// Do some more stuff here...
}
}

最佳答案

在别处找到了答案,这很有效。发帖给任何来到这里并有相同查询的人。

长话短说——

使用以下代码在您的初始化函数中解码 DocumentReference:

ref = try container.decode(DocumentID<DocumentReference>.self, forKey: .ref)
.wrappedValue

更长的解释:我不会假装 100% 理解这个,但这里有一个很好的解释 https://github.com/firebase/firebase-ios-sdk/issues/7242

关于ios - 使用 Swift Codable 解码 firestore 文档时获取文档 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67304222/

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