我是iOS開發的新手,我正在學習有關將數據讀取和寫入Firebase的教程。我想從Firebase檢索數據並使用它填充tableView。與使用值事件類型觀察Firebase數據庫相混淆
當觀察參考時,使用.value數據事件類型從實時數據庫檢索數據時感到困惑。這裏是簡化的代碼
class Story
{
var text = ""
var numberOfLikes = 0
var numberOfAngry = 0
let ref: FIRDatabaseReference!
init(snapshot: FIRDataSnapshot)
{
ref = snapshot.ref
if let value = snapshot.value as? [String : Any] {
text = value["text"] as! String
numberOfLikes = value["numberOfLikes"] as! Int
numberOfAngry = value["numberOfAngry"] as! Int
} else {
numberOfAngry = 0
numberOfLikes = 0
}
}
}
class StoriesTableViewController: UITableViewController
{
// MARK: - Properties
var stories = [Story]()
private let storiesRef = FIRDatabase.database().reference().child("stories")
@IBOutlet weak var composeBarButtonItem: UIBarButtonItem!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
storiesRef.observe(.value, with: { snapshot in
self.stories.removeAll()
for child in snapshot.children {
let story = Story(snapshot: child as! FIRDataSnapshot)
self.stories.append(story)
}
self.tableView.reloadData()
})
}
我的問題是...
我已經看過其他的教程,幾乎是相同的,只寫簡單的數據,並用它填充的tableview,但其他教程只需使用.childadded作爲事件類型即可。我不明白爲什麼在本教程中使用.value事件類型?因爲它看起來更復雜。
爲什麼我們必須循環snapshot.children?是snapshot.children就像我們創建數據庫引用時的孩子一樣?
實際上,我對於term snapshot(FIRDataSnapshot)和reference(FIRDatabasereference)並不是很滿意。有沒有任何文章或視頻解釋這個詞?
對不起,如果我問了太多問題,看起來很傻,只是一個想要真正掌握這段代碼的菜鳥。在此先感謝