2017-08-10 11 views
0

これは私のデータベースの構造です。私はルートノード "イベント"の下にユニークな識別子としてuuidを持つ各イベントを格納します。Swift - Firebaseから複数の値を取得してUITABLEVIEWに表示する方法

events: 
    uuid: 
     name: summer festival 2017 
     site: vegas 
     participants: 
      employeeID1: true 
      employeeID2: true 

私は3つの列があり、私はこのコードのブロックを試みたが、それは動作しません。このテーブルには、次のデータに

Colum1(event name)  Column2(site)   Column2(# of Participants) 
summer festival 2017  vegas     2000 

を表示したいのUITableViewを持っています。助けてください。

let myRef = ref?.child("events") 

myRef?.queryOrdered(byChild: "name").observe(.childAdded, with: { (snapshot) in 

      for child in snapshot.children { 
       let snap = child as! DataSnapshot 
       if let eventName = snap.value["name"] as String { 
        self.events.append(eventName) 
       } 
      } 

     }) 
+0

あなたはdatabaseHandlerの一つのメカニズムのすべてのデータを取得し、すべてを一度にテーブルビューに表示したいですか? –

+0

こんにちは。お返事をありがとうございます。はい、それは可能ですか?はいの場合、どうすればいいですか? – TSM

+0

一度にすべてのデータを取得したい場合は、データベースハンドラ内のすべてのイベントを取得し、後でソートするときにクエリを使用しないでください。私はあなたのデモを表示する必要がありますか? –

答えて

0

ここで試すことができるコードです。それが役に立てば幸い!

//TableView outlet 
@IBOutlet weak var namesTable: UITableView! 

//Array to save all event Names 
var names = [String]() 

//Database handler Object 
var readData = DatabaseReference() 

//I use a separate Dictionary to take snapshot out of handler if required 
var postData = [String:AnyObject]() 

//make use of serrate function or calling didLoad 
override func viewDidLoad() { 
    super.viewDidLoad() 

//Database reference to Fetch Data 
readData = Database.database().reference() 

//here is a databaseHandler which fetch all events data at once 
    self.databaseHandler = self.readData.child("events").observe(.value, with: { (snapshot) in 
     self.postData = ((snapshot.value) as? [String : AnyObject]!)! 

     //print data to see if you require 
     //print it to generate loop for required things 
     print(self.postData) 

     //make snapshot as [string:anyobject] 
     if let snapDict = snapshot.value as? [String:AnyObject]{ 

      ////here is a loop which will run after you get your snapshot 
      for each in snapDict{ 
       //you will get all your names in a array all at once 
       let artistName = each.value["name"] as! String 

       //use this array to save all event name 
       self.names.append(artistName) 

      } 
      //remove ypur datasource and delegate from Storyboard 
      //here you can provide datasource and delegate 
      //if on same controller you have multiple functionality 
      //write reload table line here with datasource and delegate 
      self.namesTable.dataSource = self 
      self.namesTable.delegate = self 
     } 
    }) 
} 

テーブルビュー代表

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int 
{ 
    return names.count 

} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 
    let cell = self.namesTable.dequeueReusableCell(withIdentifier: "Cell")! 
    cell.textLabel?.text = names[indexPath.row] 
    return cell 
} 
+0

まだ問題が残っている場合はお知らせください –

+0

ありがとうございますiOS Geek。私はこれを試してみます – TSM

+0

大丈夫待っているだけで私に問題を知らせてください –

関連する問題