2016-04-13 18 views
0

Firebase'i denetleyiciye sokmakta güçlük çekiyorum. Firebase, konsola baskı yapabilmem nedeniyle doğru şekilde çalışıyor. Uygulamamdaki tüm verileri görüntüleyebilmem gerekiyor. Yardım lütfen! // // All.swift // Garantili Fiyatlandırma //iOS hızlı liste görüntüleme denetleyicimde firebase bilgileri nasıl görüntülenir?

enter image description here

import Foundation 
import UIKit 
import Firebase 

class All: UINavigationController, UITableViewDataSource, UITableViewDelegate { 

var items: [String] = [] 
var tableView: UITableView! 
let cellIdentifier = "CellIdentifier" 

override func viewDidLoad(){ 
    super.viewDidLoad() 

    self.tableView = UITableView(frame:self.view!.frame) 
    self.tableView!.delegate = self 
    self.tableView!.dataSource = self 
    self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier) 
    self.view?.addSubview(self.tableView) 

    let ref = Firebase(url:"https://sizzling-inferno-451.firebaseio.com/services") 
    ref.observeSingleEventOfType(.Value, withBlock: { snapshot in 
     for child in snapshot.children { 

//    let key = child.key //returns -Jikaijsipaij and -kalksdokoas 
//    let name = child.value.objectForKey("service_name") as NSString? 
////     
//    self.items.append(key) 
     } 
     // do some stuff once 
     print(snapshot.value) 

     // get these values and put them in the cell's text view. key is more important 
     print(snapshot.key) 



     // add to the array and just this array 


     self.tableView!.reloadData() 
    }) 
} 

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


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

    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) 

    // Fetch Fruit 
    let fruit = items[indexPath.row] 

    // Configure Cell 
    cell.textLabel?.text = fruit 
    return cell 
} 

// onclick printing 
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    print(items[indexPath.row]) 
} 

}

+0

Eh, başlayanlar için ürün dizisini doldurmadığınızdan herhangi bir veri ile tableView veri kaynağı olan). Bunu ref.observe bloğu içinde yapmak istersiniz. Kodunuzun, en azından bir anahtar listesi görüntülemek istiyorsanız, kullanmanız gerektiği şeklinde yorumlandığı anlaşılıyor. Oh, ve Firebase yapınız, service_name adlı herhangi bir anahtarı içermez, bu nedenle saat veya tür olarak var olan bir anahtar adı kullanmanız gerekir. – Jay

+0

Peki, yorumladığım kod bir firebase yapısını modellemeye çalışıyordu. Bunu uygulamaya çalıştım ama service_name yerine açıklama kullandım. Bazı nedenlerden dolayı "isteğe bağlı tür 'AnyObject ?!' unwrapped değil, '!' kullanmak demek istediniz mi? ya da '?' ." Ayrıca, diziyi nasıl dolduracağım konusunda herhangi bir öneriniz var mı? Ya da bu hataların ne olduğu hakkında bir fikrin var mı? Firebase düzgün çalışıyor ve denetleyicileri doğru şekilde kurdum ... Bu hatayı bir süredir hallediyorum ve nasıl çözeceğimi bilmiyorum. –

+0

Belki de Swift'in ayrılmaz bir parçası olan opsiyonelleri (?) Okumalısınız. Değişkenler ve opsiyonlar hakkında Apple eğiticisi oldukça iyidir. Biraz yardım vermesi gereken bir cevap ekledim. – Jay

cevap

0

Burada bir blok içinde bir dizi doldurmak için hızlı bir pasajı, ve bir kez nüfuslu sonra Verileri görüntülemek için tablo görünümünü yeniden yükleyin.

user_id_0 
    name: "Fred" 
    friend: "Barney" 

Ve tüm kullanıcıların okumak için kod, üzerlerinden yineleme ve her isim ayıklamak ve bir diziye eklemek: (

var namesArray: [String] = [] 

    ref.observeSingleEventOfType(.Value, withBlock: { snapshot in 
      for child in snapshot.children { 
       let name = child.value["name"] as! String 
       namesArray.append(name) 
      } 
      self.myTableView.reloadData() 
    }) 
İlgili konular