【发布时间】:2017-10-17 11:03:08
【问题描述】:
我正在开发一个应用程序,当我试图通过在搜索栏中搜索期间从 Firebase 数据库中检索他们的昵称来查找用户时。一开始我想把我的所有用户都放在一个数组中,但我不能。
使用有效的代码进行编辑:
var userTab = [String]()
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference()
ref.child("users").queryOrdered(byChild: "pseudo").observeSingleEvent(of: .value, with: { (snapshot) in
if (snapshot.value is NSNull) {
print("Aucune donnée trouvée dans la base de données")
} else {
for child in snapshot.children {
let userSnap = child as! DataSnapshot
let uid = userSnap.key
let userDict = userSnap.value as! [String: AnyObject]
let pseudo = userDict["nickname"] as! String
let total = snapshot.childrenCount
print(pseudo)
self.userTab.append(pseudo) // I change this line self.userTab = [pseudo]
self.resultsController.tableView.reloadData() // I add this line
print(self.userTab)
continue // I add this line too
}
}
})
print("userTab: \(self.userTab)") // Now the array isn't empty
}
在 For 循环中,我可以访问变量“伪”并在控制台中打印所有用户昵称,但 在 For 循环之外我不能将伪变量放入数组 userTab 中。我怎样才能做到这一点?我真的需要用用户的昵称填充我的 userTab 并在 TableView 中显示所有内容。 我已经尝试在 viewDidLoad() 方法之外声明“伪”变量,但同样的问题,在 For 循环之后数组始终为空。我做错了什么?
查看我的编辑,现在所有用户昵称都在 userTab 数组中,我可以在搜索栏中搜索它们并将结果显示在 tableView 中。
【问题讨论】:
-
在获取数据之前,创建带有标题的表。之后,将项目添加到数组并同时在表中创建行。这可以解决您的问题。
-
我没有在帖子中输入代码,但我已经这样做了。你要我把我的完整代码吗?
标签: ios firebase for-loop swift3 firebase-realtime-database