我正在尝试在 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/