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?
}
konnte nicht die Daten auf Tableview abrufen. und Problem ist Abruf Benutzerfunktion nicht einmal nach Daten in der Datenbank gespeichert aufrufen. – suganya
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
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