因此,我尝试使用我的Firebase帐户中的数据库信息填充UITableView
。这是在Xcode8,Swift 3中,使用UIKit在我的pod中安装了所有必需的依赖项。
Firebase中的格式如下:
Cell:
1:
name: ""
artist: ""
picture: ""
url: ""
2:
name: ""
artist: ""
picture: ""
url: ""
Cont...
以下是我的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)
})
}
请注意,我通过在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 :(得分:0)
我发现了自己的问题。这就像添加
一样简单self.tableView.reloadData()
到我的
结尾cellRef?.observe(FIRDataEventType.childAdded, with: { ...
功能