通过快速关闭从函数中检索值

时间:2020-06-08 09:36:48

标签: firebase google-cloud-firestore swiftui

我想通过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数组? 谢谢您的帮助。

1 个答案:

答案 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