尝试调用Cloud Firestore ios API中的setData(from:)时出错.我该怎么修



在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

一切正常。

相关内容

最新更新