我正嘗試從UbaseView中加載來自Firebase的數據。我加載的結構是:通過observeSingleEventOfType將Firebase日期加載到UITableView中並附加ChildAdded Observer
user: {
"simplelogin:12": 1,
"simplelogin:13": 1,
"simplelogin:15": 1,
"simplelogin:17": 1
}
我想第一時間來加載這些數據,當視圖被加載(或當它出現了,如果我要求做的是),我想「偵聽」並只將所有新的子數據添加到UITableView。 但是,我的數據加載了兩次。我怎樣才能做到這一點?
目前,我的視圖控制器的主要部分是:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.tableView.delegate = self
self.tableView.dataSource = self
// Load user
loadFirebaseUser()
}
func loadFavoriteUser() {
let firebaseRef = Firebase("http://...")
// Add Observer on Child Added
firebaseRef.observeEventType(.ChildAdded, withBlock: { userSnapshot in
println("added \(userSnapshot.key)")
})
// Initialization
firebaseRef.observeSingleEventOfType(.Value, withBlock: { userSnapshot in
println("value \(userSnapshot.value)")
self.tableView.reloadData()
})
}
輸出是
added simplelogin:12
added simplelogin:13
added simplelogin:15
added simplelogin:17
value {
"simplelogin:12" = 1;
"simplelogin:13" = 1;
"simplelogin:15" = 1;
"simplelogin:17" = 1;
}
的幫助
我不明白你的問題非常感謝,但可以確認您顯示的輸出是預期的。 Firebase首先爲每個孩子啓動一個ChildAdded事件,然後爲所有孩子合併一個Value事件。但你爲什麼要爲這兩個事件註冊處理程序?只是ChildAdded **或**值應該足夠用於大多數使用情況。 – 2015-02-11 20:13:57