2016-09-28 3 views
0

Я пытаюсь получить данные из базы данных Firebase на конкретную метку в Swift. У меня есть две метки в TableView (как Main.storyboard) с тегами 1 и 2.Swift: извлечение данных из базы данных Firebase на метку

В ViewController, у меня есть этот код:

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

@ Дравидиан я редактировал. – 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

Смежные вопросы