Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Ios 添加除当前用户以外的所有用户名';将用户名添加到数组_Ios_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

Ios 添加除当前用户以外的所有用户名';将用户名添加到数组

Ios 添加除当前用户以外的所有用户名';将用户名添加到数组,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我正在使用followfriends视图控制器加载数据库中的所有用户名,但我不希望它加载当前用户的用户名。我需要从当前用户的uid访问用户名,并将所有不等于它的用户名添加到我的数组中 您应该尽量减少循环内的查询,尤其是不相关的查询。如果数据库架构使用用户唯一id作为键,则可以使用child.key基于该键运行评估 @objc func loadData() { let rootRef = Database.database().reference()

我正在使用followfriends视图控制器加载数据库中的所有用户名,但我不希望它加载当前用户的用户名。我需要从当前用户的uid访问用户名,并将所有不等于它的用户名添加到我的数组中


您应该尽量减少循环内的查询,尤其是不相关的查询。如果数据库架构使用用户唯一id作为键,则可以使用
child.key
基于该键运行评估

@objc func loadData() {
        
        let rootRef = Database.database().reference()
        let query = rootRef.child("users").queryOrdered(byChild: "username")
        
        query.observeSingleEvent(of: .value) { (snapshot) in
            for child in snapshot.children.allObjects as! [DataSnapshot] {
                let value = child.value as? NSDictionary
                let username = value?["username"] as? String ?? ""
                if Auth.auth().currentUser!.uid != child.key {
                    self.usernames.append(username)
                }
                print(username)
            }
            self.tableView.reloadData()
            print(self.usernames)
        }
    }

什么使用户名成为当前名称?回答得很好Harry。对于Nicole:此代码读取所有
/users
。如果您发现自己经常只需要用户名,那么使用以下内容存储节点会更有效:
/usernames
。这样,您下载的数据就少了很多,您不需要阅读,从而降低了带宽成本,并为您的用户提供了更好的性能(可能还有收费的数据)。
@objc func loadData() {
        
        let rootRef = Database.database().reference()
        let query = rootRef.child("users").queryOrdered(byChild: "username")
        
        query.observeSingleEvent(of: .value) { (snapshot) in
            for child in snapshot.children.allObjects as! [DataSnapshot] {
                let value = child.value as? NSDictionary
                let username = value?["username"] as? String ?? ""
                if Auth.auth().currentUser!.uid != child.key {
                    self.usernames.append(username)
                }
                print(username)
            }
            self.tableView.reloadData()
            print(self.usernames)
        }
    }