Swift Firestore返回功能外且未向数组追加任何对象
由于某种原因,当我添加代码Swift Firestore返回功能外且未向数组追加任何对象,swift,google-cloud-firestore,Swift,Google Cloud Firestore,由于某种原因,当我添加代码if user.uid==uid{return} 它将完全从函数中返回,并且不会向数组中添加任何用户,即使我只想过滤掉当前用户,使其不被添加到数组中 func fireStoreFetchUsers(){ guard let uid = Auth.auth().currentUser?.uid else { return } let db = Firestore.firestore() db.collection("Users")
if user.uid==uid{return}
它将完全从函数中返回,并且不会向数组中添加任何用户,即使我只想过滤掉当前用户,使其不被添加到数组中
func fireStoreFetchUsers(){
guard let uid = Auth.auth().currentUser?.uid else { return }
let db = Firestore.firestore()
db.collection("Users")
.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
let dictionary = document.data()
let user = User2(uid: "", distanceFrom: "any", dictionary: dictionary)
if user.uid == uid {return}
self.users.append(user)
self.collectionView?.reloadData()
}
}
}
}
总之,您的问题似乎是希望跳过正在迭代的数组的特定元素。这正是
continue
所做的,因此只需将return
更改为continue
在上述更改之后,当user.uid==uid
时,循环的最后两行不会执行,因此该特定用户不会添加到users
数组中,也不会重新加载collectionView
,但循环将继续下一个元素的迭代,而不是从函数返回
for document in querySnapshot!.documents {
let dictionary = document.data()
let user = User2(uid: "", distanceFrom: "any", dictionary: dictionary)
if user.uid == uid {continue}
self.users.append(user)
self.collectionView?.reloadData()
}
这就是返回的意思。听起来你想
继续
。谢谢David,正如你所知,这一直是这样的,因为我发誓在我更新到新的firestore数据库之前,返回代码工作正常吗?是的,据我所知,自引入Swift以来,的行为没有任何变化。