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