2016-08-24 2 views
0

Firebase-Datenbank in etwa so aussehenWie kann ich eine Liste von Daten vom Firebase abrufen und in der Tabellenansicht anzeigen?

note-sam 
    -KPwW5EmDbEFnlkz2XKm 
     content: "abc" 
     date: "2016/08/24 17:56" 
     title: "there is" 

    -KPwW8nXaZpx9dG59wbT 
    content: "note" 
    date: "2016/08/24 17:57" 
    title: "first note" 

meinem Tisch View-Controller:

class TblViewController: UITableViewController { 

var ref : FIRDatabaseReference! 
var refHandle: UInt! 
var noteList = [note]() 
override func viewDidLoad() { 
    super.viewDidLoad() 

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

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
     } 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return noteList.count 
} 


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 


    print(noteList[indexPath.row].title) 
    cell.textLabel?.text = noteList[indexPath.row].title 
    cell.detailTextLabel?.text = noteList[indexPath.row].date 


    return cell 
} 

func fetchUsers() 
{ 

    refHandl=ref.childByAutoId.observeEventType(.childAdded, withBlock: { (snapshot) in 
     if let dictionary = snapshot.value as? [String : AnyObject] 
     { 

      print(dictionary) 

      let n_note = note() 

      n_note.setValuesForKeysWithDictionary(dictionary) 
      self.noteList.append(n_note) 

      dispatch_async(dispatch_get_main_queue(),{ 
       self.tableView.reloadData() 
      }) 

     } 

    }) 



} 

}

Meine note Klasse: -

class note: NSObject { 

    var title: String? 
    var content: String? 
    var date: String? 
} 
+0

konnte nicht die Daten auf Tableview abrufen. und Problem ist Abruf Benutzerfunktion nicht einmal nach Daten in der Datenbank gespeichert aufrufen. – suganya

+0

Versuchen Sie es erneut außerhalb des Async-Blockes zu laden, auch wurde Ihre 'print (Dictionary) Zeile ausgeführt? Versuchen Sie auch' noteList' in ** cellForRowAtIndexPath ** zu drucken und zu prüfen, ob es OK ist? – Dravidian

+0

Entfernen Sie den Dispatch_async, da er nicht benötigt wird. Ändern Sie das observeEvent in .Value und durchlaufen Sie die gelesenen Werte, um Ihre Array-Datenquelle aufzufüllen. Wenn diese Schleife abgeschlossen ist, rufen Sie tableViewReload-Daten auf. – Jay

Antwort

Verwandte Themen