I'm using a class to decode retrieved firestore documents, and it works as expected if I don't want to manipulate the data:
class Room: Identifiable, Codable {
@DocumentID public var id:String?
var name:String
}
However if I try to use my own init to set values, I can't get the firestore document 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...
}
}