2016-10-20 1 views
1

Когда я запускаю свое приложение, он должен показывать данные о имени и местоположении всех сторон в моей базе данных, но это не так. Я уверен, что получаю нужные данные, но я не знаю, что случилось. Как получить таблицу для отображения всех данных и обновления при каждом добавлении новых данных?Почему мой UITableViewCells не показывает информацию?

import UIKit 
import Firebase 
import FirebaseDatabase 

class FindPartiesViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 


    var parties = [party]() 

    @IBOutlet weak var partyTable: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     partyTable.delegate = self 
     partyTable.dataSource = self 

     let ref = FIRDatabase.database().reference() 

     ref.child("parties").queryOrderedByKey().observe(.childAdded, with: { 
      snapshot in 
      let snapshotValue = snapshot.value as? NSDictionary 
      let name = snapshotValue?["name"] as! String 
      let location = snapshotValue?["location"] as! String 
      let description = snapshotValue?["description"] as! String 

      self.parties.append(party(name: name, description: description, location: location)) 
     }) 

    } 


    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // creates the number of cells in the table 
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return parties.count 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     // Make table cells the show the user name 
     var cell = partyTable.dequeueReusableCell(withIdentifier: "Cell") 

     let nameLabel = cell?.viewWithTag(1) as! UILabel 
     nameLabel.text = parties[indexPath.row].name 

     let locationLabel = cell?.viewWithTag(2) as! UILabel 
     locationLabel.text = parties[indexPath.row].location 


     return cell! 
    } 

} 

Вот моя установка базы данных:

testApp 
     parties 
      -KUUzxkssjWoSZ22QS8r 
       description: "" 
       location: "Here" 
       name: "party 1" 
      -KUV0ObFVbPyI_SJ0f3F 
       description: ""  
       location: "There" 
       name: "party 2" 

ответ

2

Вы должны перезагрузить вид таблицы после обновления модели данных:

ref.child("parties").queryOrderedByKey().observe(.childAdded, with: { 
    snapshot in 
    let snapshotValue = snapshot.value as? NSDictionary 
    let name = snapshotValue?["name"] as! String 
    let location = snapshotValue?["location"] as! String 
    let description = snapshotValue?["description"] as! String 

    self.parties.append(party(name: name, description: description, location: location)) 

    DispatchQueue.main.async { 
     partyTable.reloadData() 
    } 
}) 
Смежные вопросы