Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Firestore返回功能外且未向数组追加任何对象_Swift_Google Cloud Firestore - Fatal编程技术网

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以来,的行为没有任何变化。