2017-04-09 10 views
0

したがって、UITableViewにFirebaseアカウント内のデータベース情報を入力しようとしています。これは、Xcode8、Swift 3で、UIKitを使用して、必要なすべての依存関係を私のポッドにインストールしています。UITableViewにFirebaseデータベース情報を取り込みます

次のようにFirebase内の形式は次のとおりです。私のように私のviewDidLoad()関数内の情報にハードコーディングすることにより、私のテーブルをテストし

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) 

    }) 
} 

注:ここでは

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

     Cont... 

は私のviewDidLoad()関数内で私のコードです続く。以下のコードは完全に機能し、適切な情報とビデオへのリンクが表示されたビュー内の表を示しました。

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) 

あなたは上記の最初のviewDidLoad()機能のために見ることができるように、私はFirebaseから受け付けております情報をプリントアウトするかどうかを尋ねると私は私のプロジェクト内の結果としてこれを取得する:

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 

あなたが推測できると思うのは、私の問題は、Firebaseから直接データを取り込もうとしているときに実行するとテーブルにロードされないということです。

何か助けが素晴らしいと私は説明しなかった何かがある場合、私は申し訳ありませんが私は明確にすることができますのでお問い合わせください!

答えて

0

私自身の問題が見つかりました。それは私の

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

機能

の終わりに

self.tableView.reloadData() 

を追加するのと同じくらい簡単でした

関連する問題