Ios 添加除当前用户以外的所有用户名';将用户名添加到数组
我正在使用followfriends视图控制器加载数据库中的所有用户名,但我不希望它加载当前用户的用户名。我需要从当前用户的uid访问用户名,并将所有不等于它的用户名添加到我的数组中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()
您应该尽量减少循环内的查询,尤其是不相关的查询。如果数据库架构使用用户唯一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)
}
}