######状況:
・インスタグラムのようなアプリを作っている
・firebaseでメールとパスワードによるサインアップ、ログイン、ログアウトを実装
######起こっているエラー:
・ログアウト後、サインアップするとログアウト前のユーザー情報が表示される
・もう一度、ビルドするとサインアップしたユーザー情報が表示される
######自分が考えられるエラー原因:
・ログアウト時、キャッシュを消すことができていない
@objc func handlelogout() { do { try Auth.auth().signOut() // ログアウトして、ログインビューに遷移するコード let controller = LoginController() let nav = UINavigationController(rootViewController: controller) nav.modalPresentationStyle = .fullScreen self.present(nav, animated: true, completion: nil) print("ログアウト成功") } catch { print("DEBUG: Failed to sing out") } }
######教えて頂きたいこと
・自分の推測した原因があっている場合:
キャッシュを削除するコードを教えてほしいです。
・通常は上記コードでエラーが起こらない場合:
他の原因があるということですので、どのようなパターンで今回のエラーが起こり得るのかを教えてほしいです。
アプリ側で持ってるユーザー情報をサインアウト時に消す必要があるのでは。
コメントありがとうございます。
その方法が検索しても自分ではわからなかったので教えて頂きたいです。
いや、あなたが書いたアプリのコードでキャッシュしてませんか?という質問です。サインアウトのコードだけ見せられても他人には分からないので、ユーザー情報を表示するコードをご確認ください。
コメントしたつもりが消えていたので再度。
Firebaseはほとんどいじらないので外している可能性はありますが、
try Auth.auth().signOut()
でサインアウトしたあと、
let controller = LoginController()
let nav = UINavigationController(rootViewController: controller)
nav.modalPresentationStyle = .fullScreen
self.present(nav, animated: true, completion: nil)
と、即座に別のログイン画面のインスタンスを作ってpresent (表示)してしまうと、永遠とログイン画面をつくってしまうことにならないでしょうか。
この辺りも含めて、適切な処理を行っていない様な気もします。
すみません、返信が遅れていました。
失礼いたしました。
いま仕事中で詳細な返信はできないのですが、Udemy上の次の講座でそのエラーを修正するものが上がっていましたので、その授業を完了し次第、またお返事させて頂きます。
あなたの回答
tips
プレビュー