我想通过firebase firestore收集有关用户的信息,我在Class中有一个函数可以执行此操作,但是我想与我的结构ContentView共享此信息。
main = [];
resultObj = new Array(this.data.length).fill(0);
this.data.forEach(e=>{
e.boundaryStats.forEach((ei,i)=>{
const checkUsername = obj => obj.label === ei.crop;
if(!main.some(checkUsername)){
main.push({
'label':ei.crop,
'data':resultObj
})
}
})
})
我尝试在我的contentView中收集此数组
class UserData : ObservableObject {
// Use Firebase library to configure APIs
@Published var db = Firestore.firestore()
@Published var WholeDocument : Array<String> = []
func GetAllData(completion: @escaping (Array<String>) -> ()) {
db.collection("Users").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
completion([""])
} else {
for document in querySnapshot!.documents {
//print("\(document.documentID) => \(document.data())")
self.WholeDocument.append(document.documentID)
}
completion(self.WholeDocument)
}
}
如何使用闭包检索WholeDocument数组? 谢谢您的帮助。
答案 0 :(得分:1)
如果我正确理解结构/问题,则您的目标是在另一个SwiftUI视图中访问Col E
数组。做到这一点的方法可能是:
WholeDocument
这样,当您使用class UserData : ObservableObject {
// Use Firebase library to configure APIs
private var db = Firestore.firestore()
@Published var WholeDocument : Array<String> = []
init() {
db.collection("Users").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
completion([""])
} else {
for document in querySnapshot!.documents {
// print("\(document.documentID) => \(document.data())")
self.WholeDocument.append(document.documentID)
}
}
}
}
}
struct MyContentView : View {
@ObservedObject var database: UserData
var body: some View {
// access database.WholeDocument
List(database.WholeDocument, id: \.self) {
// do something
}
}
的实例初始化MyContentView
时,将能够在该视图中观察UserData
。