2016-12-21 12 views
1

Firebaseを初めて使いました。この質問がちょっと「初心者」か混乱している場合は事前にお詫び申し上げます。ユーザIDを確認する(FirebaseとSwift)

私はfirebaseを使用することを学ぶプロジェクトで遊んでいて、私は2つのユーザータイプ "doctor"と "patient"を持っています。私は完璧に働いているサインアップとログインシステムをセットアップすることができました。現在、医師としてサインアップした場合、医師のページに行き、患者としてサインアップすると、患者のページにセグをします。また、既にログインしている場合は、ログイン/サインアップページをスキップしてホームページに直接アクセスできるように設定しています。

私の問題は、あなたが医者または患者としてログインしていれば、起動時に自動的に患者のホームページにセグメンテーションすることです。私は、現在のユーザーIDがデータベースの "Patient"ノードの下のユーザーIDである場合、現在のユーザーIDがデータベースの "Doctor"ノードの下にある場合に患者のホームページにセグメンテーションするかどうかをチェックしようとしています医者のホームページにセグを張り、コンソールにローカルエラーを出力します。これは私が現在立ち往生しているところで、何か助けや指導をいただければ幸いです。

これは、自動的にアプリの起動時にログインしている場合は、ホームページへsegues私の現在のコードであり、それは最初のビューコントローラである:事前に

 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) 

     } 
    }) 

おかげヒープ。

+0

ヘルプには十分なコードがありません。あなたがどのビューに入るかを決定するコントローラーロジックはどこですか?あなたが患者か医者かを判断するためにユーザーの役割をどこにロードしていますか?関連するすべてのコード、サンプルデータ、デバッグログ、バージョン情報を含めると、問題を十分に理解することができます。 [How to Ask](http://stackoverflow.com/help/how-to-ask)と[mcveを作成する](http://stackoverflow.com/help/mcve)を参照してください。 – Kato

答えて

1

私の問題を解決する方法を見つけることができました。私はそれが最良の修正ではないことを知っていますが、多くのテストの後では問題なしでうまくいきます。誰にも同様の問題がある場合、私は私の問題を解決するために、ユーザーの2種類をチェックすることができるようするために使用したコードは次のとおりです。誰もがこのコードを書くためのより良い方法を持っている場合

 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) 

       } 
      }) 

     } 

    }) 

はお気軽にどうぞそれをコメントとして追加します。

ありがとうございました。

関連する問題