我有一個方法從FireBase獲取數據,將其保存在本地並將其加載到UITableView中。它運作良好。從服務器swift更新數組中的更改
現在,這個觀察者(rootGenerals.observe())正在運行,並且每次在服務器上更改數據時都會進行更新。
我的問題是,我不想重新加載整個表,一旦我得到一個新的數據(就像我現在所做的那樣),我只想更新表中具體更改的行或替換行的位置( IndexPath)如果分數已經改變。
任何想法如何做到這一點?只需要一些指導,瞭解在這種情況下處理的最佳方式。
rootGenerals.observe(.value, with: { snapshot in
if !snapshot.exists() { return }
let general = snapshot.value as! NSDictionary
if let users : NSDictionary = general.object(forKey: "users") as? NSDictionary
{
if (self.usersFromDB?.count != 0) {
// Update table rows
self.arrRecords = []
}
else {
// Create table from scratch
self.usersFromDB = users
for user : Any in users.allKeys {
let userDict : NSDictionary = users.object(forKey: user as! String) as! NSDictionary
let record : Record = Record()
record.displayName = userDict.object(forKey: "name") as! String
record.time = userDict.object(forKey: "time") as! Int
record.solvedLogos = userDict.object(forKey: "logos_solved") as! Int
record.deviceId = userDict.object(forKey: "device_id") as! String
record.raw = userDict
self.arrRecords.append(record)
}
self.sortRecords()
}
}
})
我想你可以使用'.childChanged'事件類型來檢測指定引用的孩子何時更新或更改 – 3stud1ant3