2017-04-09 6 views
0

Also versuche ich meine UITableView mit Datenbankinformationen in meinem Firebase-Konto zu füllen. Dies ist in Xcode8, Swift 3, mit UIKit mit allen erforderlichen Abhängigkeiten in meinem Pod installiert.Füllen Sie UITableView mit Firebase Datenbankinformationen

Das Format innerhalb Firebase ist wie folgt:

Cell: 
    1: 
     name: "" 
     artist: "" 
     picture: "" 
     url: "" 
    2: 
     name: "" 
     artist: "" 
     picture: "" 
     url: "" 

     Cont... 

Hier ist mein Code in meiner viewDidLoad() Funktion:

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 

    //Set firebase refferences 
    dbRef = FIRDatabase.database().reference() 
    cellRef = dbRef?.child("Cells") 

    cellRef?.observe(FIRDataEventType.childAdded, with: { 

     (snapshot: FIRDataSnapshot) in 

     let artist = snapshot.childSnapshot(forPath: "artist").value as! String 
     let title = snapshot.childSnapshot(forPath: "title").value as! String 
     let picture = snapshot.childSnapshot(forPath: "picture").value as! String 
     let vidURL = snapshot.childSnapshot(forPath: "url").value as! String 

     print("\(artist) \n\(title) \n\(picture) \n\(vidURL)") 

     let youtubeURL = NSURL(string: vidURL) 
     let youtubeRequest = NSMutableURLRequest(url: youtubeURL! as URL) 
     youtubeRequest.setValue("https://www.youtube.com", forHTTPHeaderField: "Referer") 

     let p1 = AddCell(imageURL: picture , 
          videoURL: youtubeRequest, 
          songTitle: title, 
          artistName: artist) 

     self.addCells.append(p1) 

    }) 
} 

Bitte beachte, dass ich meinen Tisch in meiner viewDidLoad() Funktion von hartzucodieren in Informationen geprüft, wie folgt. Der folgende Code funktionierte perfekt und bot mir eine Tabelle mit den richtigen Informationen und Links zu den Videos.

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 

    let youtubeURL = NSURL(string: https://www.youtube.com/embed/Fx-EfjsRcBk) 
    let youtubeRequest = NSMutableURLRequest(url: youtubeURL! as URL) 
    youtubeRequest.setValue("https://www.youtube.com", forHTTPHeaderField: "Referer") 

    let p1 = AddCell(imageURL: http://theshotgunseat.com/wp-content/uploads/2015/03/sam-hunt-2014-promo-650x400.jpg, 
          videoURL: youtubeRequest, 
          songTitle: "Body Like A Back Road", 
          artistName: "Sam Hunt") 

    self.addCells.append(p1) 

Wie Sie oben für die erste viewDidLoad() Funktion sehen können, bitte ich die Informationen auszudrucken, die ich von Firebase erhalten und ich dies als ein Ergebnis innerhalb von meinem Projekt:

Sam Hunt 
Body Like A Back Road 
http://theshotgunseat.com/wp-content/uploads/2015/03/sam-hunt-2014-promo-650x400.jpg 
https://www.youtube.com/embed/Fx-EfjsRcBk 
Keith Urban 
The Fighter 
https://pbs.twimg.com/profile_images/714823132851400707/bKM-rUs_.jpg 
https://www.youtube.com/embed/GzT4p-OaJ5c 

Ich bin mir sicher, dass Sie wissen, dass mein Problem darin besteht, dass es beim Laden direkt von Firebase nicht in meine Tabelle geladen wird, sondern genau dann, wenn ich es für einen bestimmten Song fest codiere.

Jede Hilfe wäre toll, und wenn es etwas gibt, was ich vermisst habe zu erklären, tut mir leid, aber bitte fragen Sie, damit ich klären kann!

Antwort

0

Ich habe mein eigenes Problem gefunden. Es war so einfach wie

self.tableView.reloadData() 

bis zum Ende meiner

cellRef?.observe(FIRDataEventType.childAdded, with: { ... 

Funktion Hinzufügen

Verwandte Themen