2016-06-24 67 views
0

我無法呈現從數據庫獲得的對象。 我聲明數組包含我的項目提出:無法在TableViewController中顯示Firebase數據庫中的項目

var tournaments = [TournamentItem]() 

我的結構的TournamentItem初始化函數:

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 
} 

功能來獲取數據的樣子:

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() 
     } 

    }) 
} 

而且我裏面調用此我的ViewDidLoad方法。 問題是,在調用此方法後,我的數組是空的,但Firebase數據庫不是。 我試圖調試這整個事情,但我找不到解決這個問題的任何解決方案。

我TableViewController委託方法是這樣的:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 

    return 1 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return self.tournaments.count 
} 
+1

難道你忘了叫'tableView.reloadData()'如果自我.tournaments.isEmpty {//不是討論主題 self.showAlertOfEmptyTournamentsArray() }'? – Santosh

+0

您是否在從observeEventType異步回調之後檢查數組? –

+0

@Santosh在這裏就是這種情況。現在它工作正常,謝謝! – michalbanan

回答

2

呼叫tableView.reloadData()後,也可以是else:`後

if self.tournaments.isEmpty { 
    self.showAlertOfEmptyTournamentsArray() 
} 
tableView.reloadData() 
+0

你需要點擊綠色的右標記來接受它,而不僅僅是upvoting。 – Santosh

相關問題