2016-12-21 2 views
1

Ich bin neu bei Firebase und ich entschuldige mich im Voraus, wenn diese Frage ein wenig "Anfänger" oder verwirrend ist.Benutzer-IDs prüfen (Firebase und Swift)

Ich spiele mit einem Projekt, das lernt, firebase zu verwenden, und ich habe zwei Benutzertypen "Doktor" und "Patient". Ich konnte ein Anmelde- und Anmeldesystem einrichten, das perfekt funktioniert. Derzeit, wenn Sie sich als Arzt anmelden, wechseln Sie zur Seite "Arzt" und wenn Sie sich als Patient anmelden, wechseln Sie zur Patientenseite. Ich habe auch so eingerichtet, dass Sie nach dem Start der App, wenn Sie bereits eingeloggt sind, die Anmelde-/Anmeldeseite überspringen und direkt zur Startseite wechseln.

Mein Problem ist, dass es egal ist, ob Sie als Arzt oder Patient angemeldet sind und automatisch beim Start auf die Patienten-Homepage wechseln. Ich versuche zu überprüfen, ob die aktuelle Benutzer-ID eine Benutzer-ID unter dem Knoten "Patient" in der Datenbank ist, um dann zur Patienten-Homepage zu wechseln, wenn sich die aktuelle Benutzer-ID unter dem Knoten "Arzt" in der Datenbank befindet dann zur Überleitung zur Arzt-Homepage sonst den lokalen Fehler zur Konsole ausdrucken. Dies ist, wo ich derzeit stecken bin und jede Hilfe oder Anleitung würde sehr geschätzt werden.

Dies ist mein aktueller Code, den Sie automatisch segues zur Startseite, wenn Sie in beim Start von App angemeldet sind, und es ist auf dem Anfangs-View-Controller:

 FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in 

     if user != nil{ 

      print("User is signed in.") 

      //send the user to the PatientHomeViewController 

      let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:nil) 

      let PatientHomeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "PatientHomeViewController") 

      //send the user to the patient homepage 
      self.present(PatientHomeViewController, animated: true, completion: nil) 

     } 
    }) 

Dankhaufen im Voraus.

+0

Nicht genug Code hier zu helfen. Wo entscheidet die Steuerungslogik, in welche Ansicht Sie wechseln? Wo laden Sie die Benutzerrollen, um festzustellen, ob es sich um einen Patienten oder einen Arzt handelt? Es wird Ihnen helfen, den gesamten relevanten Code, die Beispieldaten, die Debug-Protokollierung und Versionsinformationen einzubeziehen, damit wir das Problem vollständig verstehen können. Siehe [how to ask] (http://stackoverflow.com/help/how-to-ask) und [creating a mcve] (http://stackoverflow.com/help/mcve). – Kato

Antwort

1

Ich konnte einen Weg finden, mein Problem zu beheben. Ich weiß, es ist nicht die beste Lösung, aber nach vielen Tests funktioniert es gut ohne Probleme. Wenn jemand anderes ein ähnliches Problem hat der Code, den ich verwendet habe, mein Problem zu beheben und zu können zwei Arten von Benutzern überprüfen ist:

 let rootRef = FIRDatabase.database().reference() 

    FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in 

     if(user != nil){ 

      rootRef.child("Patients").child((user?.uid)!).observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in 

       if(snapshot.exists()) { 

        print("Patient is signed in.") 

        let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:nil) 

        let patientHomeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "PatientHomeViewController") 

        self.present(patientHomeViewController, animated: true, completion: nil) 

       } else { 

        print("Doctor is signed in.") 

        let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:nil) 

        let doctorHomeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "DoctorHomeViewController") 

        self.present(doctorHomeViewController, animated: true, completion: nil) 

       } 
      }) 

     } 

    }) 

Wenn jemand einen besseren Weg, diesen Code zu schreiben, wenden Sie sich bitte an Fügen Sie es als Kommentar hinzu.

Danke.