Ich kann meine Objekte aus der Datenbank nicht darstellen. Ich erklärte Array meine Einzelteile für die Aufnahme zu präsentieren:Elemente aus der Firebase-Datenbank in TableViewController können nicht angezeigt werden
var tournaments = [TournamentItem]()
Funktion My Struktur TournamentItem init:
init(snapshot: FIRDataSnapshot!) {
key = snapshot.key
ref = snapshot.ref
type = snapshot.childSnapshotForPath("type").value as! String
name = snapshot.childSnapshotForPath("name").value as! String
numberOfParticipants = snapshot.childSnapshotForPath("numberOfParticipants").value as! Int
tournamentMode = snapshot.childSnapshotForPath("mode").value as! Bool
completed = snapshot.childSnapshotForPath("completed").value as! Bool
}
Funktion, um Daten zu erhalten wie folgt aussieht:
func getTournamentListSnapshot() {
ref.observeEventType(.Value, withBlock: { snapshot in
//print("\(snapshot.key) -> \(snapshot.value)")
for item in snapshot.children {
let tournamentItem = TournamentItem(snapshot: item as! FIRDataSnapshot)
self.tournaments.append(tournamentItem)
}
if self.tournaments.isEmpty { //not a subject of discussion
self.showAlertOfEmptyTournamentsArray()
}
})
}
Und ich nenne das Innere meine ViewDidLoad-Methode. Das Problem ist, dass nach dem Aufruf dieser Methoden mein Array leer ist, aber Firebase-Datenbank nicht ist. Ich habe versucht, das ganze Ding zu debuggen, aber ich kann keine Lösung für dieses Problem finden.
Meine Tableviewcontroller Delegatmethoden sieht wie folgt aus:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.tournaments.count
}
Haben Sie rufen vergessen zu 'tableView.reloadData()' 'nach, wenn Selbst .tournaments.isEmpty {// kein Thema der Diskussion self.showAlertOfEmptyTournamentsArray() } '? – Santosh
Überprüfen Sie das Array vor dem asynchronen Rückruf von observeEventType? –
@Santosh das war hier der Fall. Jetzt funktioniert es richtig, danke! – michalbanan