在Swift中工作。。
我正试图调用.setData(from:(,为云firestore数据库中的文档编写一个可编码结构,如Firebase文档中所述:
https://firebase.google.com/docs/firestore/manage-data/add-data#custom_objects
然而,我得到了错误:"参数标签'(from:('与任何可用的重载都不匹配">
奇怪的是,我曾经能够在模拟器上构建和运行过一次,并成功地发布了一个文档,但现在很明显,编译器调用了这个错误,导致构建失败。以下相关代码:
导致构建失败的行:
do {
try collectionRef.document(lensSet.id.uuidString).setData(from: lensSet)
} catch let error {
print(error)
}
可编码结构:
struct LensSet: Codable, Identifiable {
var id: UUID
// Coding KEYS
private enum CodingKeys: String, CodingKey {
case id
}
}
他们说要在文档中调用的函数似乎不存在?感谢您的帮助!
文档并没有完全错误,只是有一部分不完整。
编辑:对于TL;博士
请参阅Peter Friese的指南:Swift 中的Firestore数据映射
对于更长的解释
Firebase添加了一个扩展,使制作自定义obects变得更容易,但在文档中没有提到这个扩展。(我认为这是一个扩展(
关于自定义对象的文档是需要扩展的代码示例
通过将此添加到您的podfile 中进行简单修复
pod 'FirebaseFirestoreSwift'
然后在终端或茧中进行pod更新。
然后在你的类中只需更新导入以包括
import Cocoa
import FirebaseCore
import FirebaseFirestore
import FirebaseFirestoreSwift
为了参考,文档中的代码是这个
try db.collection("cities").document("LA").setData(from: city)
和这个
let docRef = db.collection("cities").document("LA")
docRef.getDocument { (document, error) in
let result = Result {
try document.flatMap {
try $0.data(as: City.self)
}
}
和这条线路
.data(as: City.self)
和
.setData(from:
是需要FirebaseFirestoreSwift 的"麻烦制造者">
刚刚遇到了同样的问题,简单的解决方法是只使用两个
import FirebaseFirestore
import FirebaseFirestoreSwift
一切正常。