2016-04-11 8 views
-1

Hat jemand Erfahrung mit Firebase? Ich versuche, die Informationen, die ich innerhalb der Firebase habe, innerhalb eines Navigationscontrollers anzuzeigen. Immer wenn ich das Programm starte, zeigen die Informationen an, dass es empfangen wird, weil ich Druckzeilen habe, die alles drucken, was es an die Eingabeaufforderung empfängt, aber ein Fehler wird ausgelöst.Verbinde UITableView mit Firebase Ergebnissen

NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier CellIdentifier - must register a nib or a class for the identifier or connect a prototype cell in a storyboard 

Meine swift-Datei ist hier:

let ref = Firebase(url:"https://<firebase-id>.firebaseio.com/services") 
      ref.observeSingleEventOfType(.Value, withBlock: { snapshot in 
       // 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.items.append(snapshot.key) 

       self.tableView!.reloadData() 
      }) 

Ohne werfen einen Fehler:

// 
// All.swift 
// Guaranteed Pricing 
// 
// Created by DePauw on 3/30/16. 
// Copyright © 2016 DePauw. All rights reserved. 
// 

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: "cell") 
     self.view?.addSubview(self.tableView) 

     let ref = Firebase(url:"https://<firebase-id>.firebaseio.com/services") 
     ref.observeSingleEventOfType(.Value, withBlock: { snapshot in 
      // 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.items.append(snapshot.key) 

      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]) 
    } 
} 

ich alle Informationen gefunden herunterladen möchten. Das ist mein Drehbuch:

Antwort

0

Sie registrierte Ihre Zelle mit der falschen Kennung. Ändern Sie diese Zeile zu:

self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier) 
0

Dieser Firebase-Code wird Ihnen Probleme verursachen.

Beachten Sie bei der Beobachtung mit .Value, dass alles innerhalb dieses Knotens zurückgegeben wird. alle Kinder, Kinder der Kinder usw. Sie werden über die Kinder wiederholen wollen, gab den Schlüssel zu erhalten: Wert-Paare

Sie dies nicht Ihre Struktur hinterlassen, sondern mit den Tasten mit childByAutoId

services 
    -Jikaijsipaij 
    service_name: "my service" 
    -kalksdokoas 
    service_name: "another service" 
erzeugt nehmen

.value gibt alles innerhalb der Dienste zurück, so dass beim Iterieren über die untergeordneten Elemente alle Schlüssel und untergeordneten Werte dieses Schlüssels abgerufen werden.

+0

Ich bekomme immer einen "Wert des Objekts ist unverpackt" für den Wert und Schlüssel, wenn ich Ihren Code Jay verwenden. Es macht Sinn für mich, aber aus irgendeinem Grund hat X-Code Probleme beim Lesen der Variablen Schlüssel und Name. Ich habe sogar versucht, lokale Variablen als Zeichenfolgen zu deklarieren. –

+0

@Adrianables Meine Entschuldigung - vergessen zu definieren, was child.key war: Die Antwort wurde mit 'as NSString' aktualisiert. Vergessen Sie nicht, dass die Datenstruktur service_name wie oben definiert enthalten muss. – Jay

+0

kein pronlem Jay! Ich schätze deine Hilfe sehr. Ich habe nur den NSString geändert, das Projekt bereinigt und die Datenstruktur geändert, aber die gleichen Fehler treten immer noch auf. Auch gibt es einen Fehler, der direkt vor dem Wert auftritt, der weitergeht, und ich weiß nicht warum. Der Fehler versucht weiterhin, ein "?" oder '!' nach Wert. –