Ich habe Probleme, meine Daten von Firebase auf meinem TableView anzuzeigen. Ich möchte nur die Vin-Nummer in der Tabellenansicht anzeigen. Im Moment bekomme ich entweder Zellen, die "Null" oder nichts in den Zellen anzeigen.Firebase zu Tableview Ausgabe
Mein Ziel ist es, dass jede Zelle die Vin-Nummer anzeigt.
Kann jemand einen Blick darauf werfen und mich wissen lassen, wo ich ein Problem habe?
Danke !!! Alex
hier ist das, was meine Feuerbasis Datenbank sieht aus wie
Kind --Vehicles
Kind - 5UXKR0C34H0X82785
child-- zum Auto dann unter dem "Fahrzeug Info" Kind es diese zeigt drei Felder
machen: "toyota"
Modell: "coro lla“
VinNumber: "5UXKR0C34H0X82785"
Hier ist meine Fahrzeugmodellklasse
import Foundation
import FirebaseDatabase
struct VehicleModel {
var Make: String?
var Model: String?
var VinNumber: String?
init(Make: String?, Model: String?, VinNumber: String?){
self.Make = Make
self.Model = Model
self.VinNumber = VinNumber
}
init(snapshot: DataSnapshot) {
let snapshotValue = snapshot.value as! [String: AnyObject]
VinNumber = snapshotValue["VinNumber"] as? String
Make = snapshotValue["Make"] as? String
Model = snapshotValue["Model"] as? String
}
}
Hier ist meine Ansicht Controller-Code
import UIKit
import Firebase
import FirebaseDatabase
class InventoryTableViewController: UITableViewController{
var ref: DatabaseReference!
var refHandle: UInt!
var userList = [VehicleModel]()
let cellId = "cellId"
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference()
tableView.delegate = self
tableView.dataSource = self
tableView?.register(UITableViewCell.self, forCellReuseIdentifier:
"cellId")
fetchUsers()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection
section: Int) -> Int {
return userList.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath:
IndexPath) -> UITableViewCell {
// Set cell contents
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for:
indexPath) as UITableViewCell
let eachvehicle = userList[indexPath.row]
cell.textLabel!.text = "\(String(describing: eachvehicle.VinNumber))"
return cell
}
func fetchUsers(){
refHandle = ref.child("Vehicles").observe(.childAdded, with: {
(snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
print(dictionary)
let VinNumber = dictionary["VinNumber"]
let Make = dictionary["Make"]
let Model = dictionary["Model"]
self.userList.insert(VehicleModel(Make: Make as? String, Model:
Model as? String, VinNumber: VinNumber as? String), at: 0)
self.tableView.reloadData()
}
})
}
}
Auch ich Fragen habe das Make Anzeige und Modell der ausgewählten Zelle in einem anderen Ansichtscontroller, der durch ein Segment verbunden ist. Ich habe versucht, die Werte zu übergeben, kann sie aber nicht zum Laufen bringen.
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath:
IndexPath) {
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let destination = storyboard.instantiateViewController(withIdentifier:
"AdditionalInfoViewController") as! AdditionalInfoViewController
navigationController?.pushViewController(destination, animated: true)
performSegue(withIdentifier: "toAdditionalInfo", sender: self)
let row = indexPath.row
print("working so far ")
let indexPath = tableView.indexPathForSelectedRow!
let currentCell = tableView.cellForRow(at: indexPath)! as UITableViewCell
makeToPass = currentCell.Model
modelToPass = currentCell.Make
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toMapView" {
var viewController = segue.destination as! AdditionalInfoViewController
viewController.makeToPass = makeValueToPass
viewController.modelToPass = modelValueToPass
}
}
Dank Jen !!!! Das hat funktioniert! Du bist toll!!!!!!! – Alex
Froh, dass es geholfen hat! Beachten Sie bitte, dass wenn Sie neben "VehicleInfo" weitere Daten unter den Push-IDs unter "Fahrzeuge" haben, diese Daten immer dann herunterladen, wenn ein neues Fahrzeug hinzugefügt wird, unabhängig davon, ob Sie die Daten neben "VehicleInfo" verwenden . Wenn neben 'VehicleInfo' noch andere Daten unter dem Namen' 5UXKR0C34H0X82785' vorhanden sind, sollten Sie vielleicht erneut überdenken, wie der Listener ausgelöst wird oder wie die Datenbank strukturiert ist, sodass Sie nur die Daten herunterladen, die Sie benötigen. –
danke dafür auch zu erwähnen. Ich werde definitiv auf die Datenbank schauen, um zu sehen, ob ich es umstrukturieren kann. Danke noch einmal!!! – Alex