Ich baue eine 2-Bestellung-App, eine für den Kunden Bestellungen zu buchen, die andere für die Fahrer zu akzeptieren, so von der anderen App habe ich keinen Zugriff auf Benutzer-ID, es funktioniert kaum, aber ein Kopfschmerz zu Firebase Jetzt versuche ich, neue Befehle zu meiner Datenstruktur hinzuzufügen/zu lesen, aber ich konnte nicht herausfinden, wie ich nur die neuen Befehle lese, ohne eine ganze Reihe von Schleifen zu erstellen, wenn ich Daten verändere. ich alles löschen und wieder alle Daten laden,Kann ich meine Firebase-Struktur verbessern?
hier ist mein Code
override func viewDidLoad() {
super.viewDidLoad()
loadData()
ref.observe(.childChanged, with: { snapshot in
print("\n\n\nthe changed user is: \(snapshot.value)\n\n\n")
self.usrData.removeAll() //if change is detected, remove everything then readd them
self.loadData() //load firebase Data to my data structure
})
}
Hier ist meine Last Daten Methode
func loadData(){
ref.observe(.childAdded, with: { snapshot in
if let result = snapshot.children.allObjects as? [FIRDataSnapshot] {
print("snapshot.value is snapshot \(snapshot.valueInExportFormat())")
if let tes = snapshot.value as? Dictionary<String, AnyObject> {
print("snapshot dictionarty is snapshot \(tes.reversed())")
let est = tes.reversed()
for t in est {
print("snapshot dictionarty name snapshot \(t.value["name"] as! String)")
print("snapshot dictionarty name snapshot \(t.value["email"] as! String)")
print("snapshot dictionarty name key \(t.key)")
let usr = userData(name: t.value["name"] as! String, email: t.value["email"] as! String, mobile: "", date: 0, latitude: "", longititude: "", ordertxt: "", status: "", usrKey:t.key, orderNumb:"")
self.usrData.append(usr)
}
}
var count = 0
for child in result {
let dict = child.childSnapshot(forPath: "orders").value as! Dictionary<String, AnyObject>
print("dict is \(dict)")
for dic in dict {
if (dic.value["status"] as! String) == "pending" {
self.usrData[count].mobile = dic.value["mobile"] as! String
self.usrData[count].date = dic.value["date"] as! NSNumber
self.usrData[count].latitude = dic.value["latitude"] as! String
self.usrData[count].longititude = dic.value["longitude"] as! String
self.usrData[count].ordertxt = dic.value["orderText"] as! String
self.usrData[count].status = dic.value["status"] as! String
self.usrData[count].orderNumb = dic.key
print("\(count) dic key is\(dic.key)")
} else {
print("\n\n\n status isn't pending for some reason -> \(self.usrData[count].status)")
self.usrData.remove(at: count)
count-=1
continue
}
}
count += 1
}
} else {
print("\n\n result is nil or something\n\n");
}
self.tableView.reloadData()
})
}
sowieso, um es zu verbessern?