2016-06-24 6 views
0

データベースから取得したオブジェクトを表示できません。 は、私が提示する私のアイテムを入れるための配列を宣言した:Firebaseデータベースの項目をTableViewControllerに表示できません

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

を忘れていました.tournaments.isEmpty {//議論の対象ではない self.showAlertOfEmptyTournamentsArray() } '? – Santosh

+0

observeEventTypeからの非同期コールバックの後に配列をチェックしていますか? –

+0

@Santoshここのケースでした。今、それは正常に動作しています、ありがとう! – michalbanan

答えて

2

コールtableView.reloadData()後またはelseであってもよい:あなたは、もし自己 `の後に`) `tableView.reloadData(呼び出すこと

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

緑色の右のマークをクリックするだけでアップアップだけでなく回答として受け入れる必要があります。 – Santosh

関連する問題