Я пытаюсь добавить элементы в массив, чтобы позже использовать эти данные и создать TableView в качестве таблицы лидеров. Я уже прочитал все посты, которые смог найти, но ни один из них не сработал для меня.
У меня есть база данных Firebase, откуда я получаю данные пользователя. Вот узел:
Здесь вы можете увидеть мой класс, который обрабатывает этот ViewController:
import UIKit
import FirebaseDatabase
import FirebaseAuth
class LeaderboardViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var users:[User] = []
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.reloadData()
}
override func viewWillAppear(_ animated: Bool) {
load()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return users.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "leaderCell") as! LeaderboardTableViewCell
cell.placing.text = "\(indexPath.item+1)"
cell.points.text = "\(indexPath.item + 20)"
cell.name.text = "TestUser"
return cell
}
func load(){
let ref = Database.database().reference(withPath: "users")
ref.observeSingleEvent(of: .value) { (snapshot) in
let value = snapshot.value as? NSDictionary
for key in value!.allKeys{
ref.child("\(key)").observeSingleEvent(of: .value) { (snapshot) in
let userinfo = snapshot.value as? NSDictionary
let username = userinfo?.value(forKey: "username") as! String
let year = userinfo?.value(forKey: "year") as! String
let points = userinfo?.value(forKey: "points") as! Int
self.users.append(User(username: username, useryear: year, userpoints: points))
}
}
}
}
}
Я пытаюсь получить данные, когда мой ViewController «загрузится», так что, когда представление появилось, я могу перезагрузить данные TableView. Проблема в том, что полученные данные не будут сохранены в массив.
Я уже пытался инициализировать массив с 6+ элементами, но это ничего не изменило. Я также читал, что это может быть связано с тем, что я использую для каждого l oop, но я не мог понять, как это исправить.