swift firestore 将用户附加到数组 - 完成 block

标签 swift google-cloud-firestore

我正在尝试在 self.cardViewModels.append(user.toCardViewModel()) 完成将所有用户附加到 之后调用函数 self.setupDummyCards() >CardViewModels 数组,但我不知道该放在哪里?

fileprivate func fetchUsersFromFirestore() {
    guard let uid = Auth.auth().currentUser?.uid else { return }


    Firestore.firestore().collection("Users").document(uid).collection("Following").getDocuments() { (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                for document in querySnapshot!.documents {
                let d = document.data()
                d.forEach({ (key: String, value: Any) in



                Database.firestorefetchUserForTinderCardWithUID(uid: key, completion: { (user) in

            self.cardViewModels.append(user.toCardViewModel())

//below it is called after each user is appended, meaning it appends the same users again and again until the last user is add
                   self.setupDummyCards()
                })
          //here is called before self.cardViewModels.append(user.toCardViewModel())
        })

        //here is called before self.cardViewModels.append(user.toCardViewModel())            

    }
      //here is called before self.cardViewModels.append(user.toCardViewModel())
}
//here is called before self.cardViewModels.append(user.toCardViewModel())
    }
  //here is called before self.cardViewModels.append(user.toCardViewModel())
}

最佳答案

我刚得到 documents.count 然后只在 documents.count 等于 cardViewModels.count 时调用 self.setupDummyCards()

   fileprivate func fetchUsersFromFirestore() {
    guard let uid = Auth.auth().currentUser?.uid else { return }
   Firestore.firestore().collection("Users").document(uid).collection("Following").getDocuments() { (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {

                let dc = querySnapshot?.documents.count

                for document in querySnapshot!.documents {
                let d = document.data()



                d.forEach({ (key: String, value: Any) in



                Database.firestorefetchUserForTinderCardWithUID(uid: key, completion: { (user) in

            self.cardViewModels.append(user.toCardViewModel())

                    if self.cardViewModels.count == dc {
                   self.setupDummyCards()
                    }
                })

        })



    }

}
    }

}

关于swift firestore 将用户附加到数组 - 完成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53443567/

相关文章:

firebase - 如何在 flutter 中获取火警数据

firebase - 错误 400 : unable to create collection using Firestore rest API

Angular 火 : limit queries to users that has a specific value

json - 如何使用 swift 与 MapKit 映射 JSON 对象

ios - Swift webview xcode 发布数据

ios - 使用开关更改整个应用程序中文本、单元格和 View Controller 的颜色

node.js - 声明自定义异常以与 Firestore 可调用函数和 VueJS 一起使用

ios - List 对象的 SwiftUI 分页

ios - 将 IBOutlet/对象传递到可重复动画的通用函数中

java - 将 firestore 数据获取到自定义对象中