Swift Cloud Firestore自定义对象映射
我对Firebase的新云Firestore相对较新,在尝试将数据映射到/从中映射时遇到困难。我试着通过Google online跟踪文档,但它存在一些问题,我无法找出问题的根源Swift Cloud Firestore自定义对象映射,swift,firebase,google-cloud-firestore,Swift,Firebase,Google Cloud Firestore,我对Firebase的新云Firestore相对较新,在尝试将数据映射到/从中映射时遇到困难。我试着通过Google online跟踪文档,但它存在一些问题,我无法找出问题的根源 当我尝试从[String:Any]转换到自定义结构时,文档建议我尝试以下操作: 但是,这在$0行上产生了一个错误。值为'NSObject'类型的数据(as:City.self)没有成员'data' 当我尝试将数据作为文档写入新集合时,文档建议我尝试以下操作: 但是这也会在上产生错误。setData(from:city)
[String:Any]
转换到自定义结构时,文档建议我尝试以下操作:$0行上产生了一个错误。值为'NSObject'类型的数据(as:City.self)
没有成员'data'
上产生错误。setData(from:city)
的参数标签(from:)与任何可用的重载都不匹配
是否有人熟悉这一点,试图为将Firestore数据转换为自定义结构提供额外的清晰度?我知道我的结构是可编码的 从未找到错误的原因,但
$0.data
转换为一个JSON数据对象,然后进行适当的解码,以便将字典映射到结构如果我理解正确,您遇到的问题与我几天前遇到的问题相同:
这里的关键是明确地执行
导入FirebaseFirestoreSwift
,而不是只执行导入Firestore
为什么我没有想到这一点!非常感谢。我希望文档能更具体地提到这一点,因为它说它在podfile示例中是可选的。不客气:D在得到Firebase团队的答复之前,我对这一点也感到困惑。我已经建议他们明确地加上这句话:)老兄,谢谢!这就是解决办法。头号人物。任何人看到这个,请确保将pod“FirebaseFirestoreSwift”也添加到您的pod文件中。哈哈。没问题。事实上,我真的很挣扎。我很高兴这有帮助:D
docRef.getDocument { (document, error) in
let result = Result {
try document.flatMap {
try $0.data(as: City.self)
}
}
switch result {
case .success(let city):
if let city = city {
print("City: \(city)")
} else {
print("Document does not exist")
}
case .failure(let error):
print("Error decoding city: \(error)")
}
}
do {
try db.collection("cities").document("LA").setData(from: city)
} catch let error {
print("Error writing city to Firestore: \(error)")
}