Ich möchte eine TabelleView basierend auf dem Timestamp Kind Wert in Firebase sortieren. Ich möchte, dass die neueste tableViewCell, die der tableView hinzugefügt wurde, bei jedem Laden der tableView (oder neu geladenen) über die Tabellenansicht gesetzt wird. Danke für jede Hilfe im Voraus!laden TabelleView basierend auf dem neuesten Zeitstempel
// JSON von Feuerbasis
{
"users" : {
"CmtuebwVrmOG3n4uSsIK1b4FsSN2" : {
"Places" : {
"-KhDwZJvca9HedFluJ5O" : {
"addedBy" : "CmtuebwVrmOG3n4uSsIK1b4FsSN2",
"place" : "Edinburgh, UK",
"timestamp" : 1.491678152020824E9
},
"-KhE7raDrM2RRs-N6FXg" : {
"addedBy" : "CmtuebwVrmOG3n4uSsIK1b4FsSN2",
"place" : "Hong Kong",
"timestamp" : 1.49168137667081E9
},
"-KhFUaEjjhE3RBOw95fc" : {
"addedBy" : "CmtuebwVrmOG3n4uSsIK1b4FsSN2",
"place" : "Illinois, USA",
"timestamp" : 1.491704112134812E9
},
"-KhzSIHrFHiUEBrzBKUH" : {
"addedBy" : "CmtuebwVrmOG3n4uSsIK1b4FsSN2",
"place" : "Ghana",
"timestamp" : 1.492492039376661E9
}
},
// Funktion Tableview der Orte laden
var placeList = [Place]()
var placesDictionary = [String: Place]()
func fetchPlaces() {
let uid = FIRAuth.auth()?.currentUser?.uid
let ref = FIRDatabase.database().reference().child("users").child(uid!).child("Places")
ref.observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let place = Place()
place.setValuesForKeys(dictionary)
// self.placeList.append(place)
if let addedBy = place.addedBy {
self.placesDictionary[addedBy] = place
self.placeList.append(place)
self.tableView.beginUpdates()
self.tableView.insertRows(at: [IndexPath(row: self.placeList.count-1, section: 0)], with: .automatic)
self.tableView.endUpdates()
}
//this will crash because of background thread, so lets call this on dispatch_async main thread
DispatchQueue.main.async(execute: {
self.tableView.reloadData()
})
}
}, withCancel: nil)
}
Dank! Ja - der Anfangs- und Ende-Update-Code erschien mir auch überflüssig. – user3708224
Keine Sorge, bitte markieren Sie Ihre Frage als beantwortet, wenn es Ihr Problem löst – Lawliet