Ich schlage diese TasteFirebase angemeldeten Benutzer nicht schnell genug geladen, bevor segue
override func viewDidLoad() {
FIRAuth.auth()?.signIn(withEmail: "[email protected]", password: "password") {
(user, error) in
// TODO: SET UP A SPINNER ICON
print("Logged into hmk")
self.performSegue(withIdentifier: "login", sender: self)
}
}
Wie Sie sehen können, auf Rückruf an einen UITableViewController umleitet. Der populator Code sitzt im initializer von UITableViewController, der einzige Zweck der Schließung ist self.chatsList
Manchmal zu füllen, wenn ich die App testen, ist die UITableViewController leer.
ref.child("users").child(currentUser.uid).observeSingleEvent(of: .value, with: { (snapshot) in
guard snapshot.exists() else {
print("Error: Path not found")
return
}
let value = snapshot.value as? NSDictionary
// Convert a dict of dicts into an array of dicts
// You will lose chatID in the process, so be warned
// Unless you would like to to keep the data in a struct
for (chatIdKey, secondDict) in value?["chats"] as! [String: NSDictionary] {
// This only appends metadata for the last chat
// Does not load every chat message
self.chatsList.append(Chat(chatId: chatIdKey, targetChat: secondDict))
}
})
Aber wenn ich die zurück-Taste drücken, lange genug warten, und wieder anmelden, wird die Tabelle richtig ausgefüllt.
Wie kann ich sicherstellen, dass es jedes Mal korrekt lädt? Ich erwartete die performSegue beim Rückruf würde garantieren, dass wir eine aktuelleUser haben ...
Danke mann! Macht Sinn –