2016-09-28 13 views
0

Firebase 데이터베이스의 데이터를 Swift의 특정 레이블로 가져 오려고합니다. TableView (Main.storyboard)에 두 개의 레이블이 12으로 표시됩니다. ViewController에서Swift : 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

관련 문제