2016-09-28 9 views
0

FirebaseデータベースからSwiftの特定のラベルに自分のデータを取得しようとしています。私はTableViewMain.storyboardとして)に2つのラベルが12とタグ付けされています。 ViewControllerSwift:Firebaseデータベースからラベルにデータを取得

、私はこのコードを持っている:

import UIKit 
import Firebase 
import FirebaseDatabase 

struct confStruct { 
    let title : String! 
    let place : String! 
} 

class EVS_Table_VC: UITableViewController { 
    var conf = [confStruct]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let databaseRef = FIRDatabase.database().reference() 
     databaseRef.child("conferences").queryOrderedByKey().observeEventType(.ChildAdded, withBlock: { 
        snapshot in 

      self.tableView.reloadData() 
     }) 
    } 

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

     return conf.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier("Cell") 

     let label1 = cell?.viewWithTag(1) as! UILabel 
     label1.text = conf[indexPath.row].title 

     let label2 = cell?.viewWithTag(2) as! UILabel 
     label2.text = conf[indexPath.row].place 

     return cell! 

    }  
} 

をしかし、何もシミュレータに現れません。誰かがこれを解決する方法を提案していますか?この構造体は、 データベースから自分の変数を初期化しますか? (title,place)。

JSONツリー:

"conferences": { 
      "Key": { 
       "date": "some date" 
       "deadline": "some deadline" 
       "place": "some place" 
       "title": "some title" 
        } 
       } 
+0

**へ** conf **テーブルデータをリロードする前 –

+0

JSONツリーを与えてください。 – Dravidian

+0

@ Dravidianを編集しました。 – gryzek

答えて

0

変更あなたの構造体への: -

struct confStruct { 
    let title : String! 
    let place : String! 

    init(title_String : String!, place_String : String!){ 

     self.title = title_String 
     self.place = place_String 
    } 

} 

そして: - あなたは**スナップショットからデータを追加する必要が

FIRDatabase.database().reference().child("conferences/Key").observeSingleEvent(of: .value, with: {(snap) in 


     if let snapDict = snap.value as? [String:AnyObject]{ 

      let titleS = snapDict["title"] as! String 
      let placeS = snapDict["place"] as! String 

      let temp = confStruct.init(title_String: titleS, place_String: placeS) 
      self. conf.append(temp) 
      self.tableView.reloadData() 
     } 
    }) 
+0

動作しません。リスト形式での表示はありません。 – gryzek

+0

私はあなたが言ったことをしました。しかし、私はまた、迅速に適切に動作するように構造を変更しました。3.ありがとう – gryzek

関連する問題