У меня есть вид таблицы.Внутри находится ячейка стола.Я хочу, чтобы мои клиенты появлялись в списке.Список клиентов происходит из базы данных Firebase.
Итак, я настраиваю представления таблиц и определяю пустой клиентский массив
class ClientViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var clients = Array<Any>()
@IBOutlet weak var tableView: UITableView!
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "clientsCell", for: indexPath as IndexPath)
cell.textLabel?.text = clients[indexPath.row] as? String
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return clients.count
}
Как только представление загружено, (что яЯ уверен, что проблема в этом) Я перебираю ссылку на базу данных и добавляю название компании в пустой массив клиентов
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var ref: DatabaseReference!
ref = Database.database().reference()
ref.child("clients").observeSingleEvent(of: .value, with: { (snapshot) in
for client in snapshot.children.allObjects as! [DataSnapshot] {
let company = client.childSnapshot(forPath: "company").value
self.clients.append(company ?? "No company name")
}
}) { (error) in
print(error.localizedDescription)
}
}
Если я жестко закодирую массив клиентов, он прекрасно работает.При этом я думаю, что итерация происходит после генерации таблицы.Как я могу заставить это работать так, как будто мне это тоже нужно?