Firestore可编码,不包括Firestore文档id



我在我的项目中使用Firebase Firestore,我已经发现我需要使用@DocumentId来正确解码Firebase "_id"属性放入可编码结构体中。

我的问题是,我需要保存编码对象(目前我使用userdefaults),并在我的应用程序生命周期后重新解码对象。

当我用Firestore编码我的Firestore对象时。编码,它失去了id属性,因为它成为编码为[String: Any],所以当我试图解码提取的预编码对象,我无法这样做。

现在我单独存储ID属性,并在解码后将其重新添加到对象中。

这是处理Firestore可编码的正确方法吗?或者有一个更干净的方式来编码,然后解码Firestore编码对象?

此处讨论

解决方案是显式地要求的文档id包装DocumentReference,然后自己手动展开。看起来像是:

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

还可以查看这些类似的案例以获取更多信息:

在Firestore中使用Codable时如何获得文档ID ?

使用自定义可解码的Firestore结构体解码时获取documententid

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

最新更新