Ich habe eine Tabelle, die alle Benutzer in meiner Firebase-Datenbank abruft. Die tableView-Zelle zeigt einfach den Benutzernamen, die E-Mail-Adresse und das Profilbild an. Das Problem ist, dass ich auch möchte, dass der Benutzer einen Attributschlüssel unter seiner UID im Benutzerknoten hat, der ein Array von Attributen enthält, die er in der App auswählt (die Attribute in diesem Beispiel sind ["food", "drink" "," Sport "]) und ich möchte nur die Benutzer anzeigen, die mindestens drei gleiche Attribute wie der aktuell angemeldete Benutzer haben.Abruf von Benutzerdaten nur, wenn aktuelle Benutzerdaten übereinstimmen
Das erste Problem ist, dass ich nicht wissen, wie man ein Array von Attributen zu meiner Firebase-Datenbank unter meiner UID hinzufügen, wie es als Attribute Knoten mit einer Liste von Index 0 bis Index 2 speichert (3 Schlüssel 0 , 1,2) mit den Saiten "Essen", "Trinken", "Sport". Ich weiß auch nicht, ob dies der beste Weg ist. Jede Hilfe wird geschätzt.
Das zweite Problem ist, dass ich nicht weiß, wie man einen neuen Benutzer holt und es meinem tableView hinzufügt, WENN NUR dieser Benutzer dieselben Attribute wie der gegenwärtige Benutzer hat. Hier ist meine aktuellen Code, dass alle Benutzer, ohne Filterung holt:
func fetchUser() {
FIRDatabase.database().reference().child("users").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let user = User()
user.setValuesForKeys(dictionary)
self.users.append(user)
DispatchQueue.main.async(execute: {
self.tableView.reloadData()
})
}
}, withCancel: nil)
}
class User: NSObject {
var name: String?
var email: String?
var numberId: String?
var attributes: String?
var password: String?
var profileImageUrl: String?
}