FirebaseAuthを使い、ログイン機能を作っています。
ログイン画面でゲスト閲覧ボタンをタップするとuserdefaultに、
UserDefaults.standard.set("guest", forKey: "check")
という様にcheckというキーで"guest"という文字列を保存される様になっています。
プロフィール画面でuserdefaultに保存されたcheckを取り出して"guest"なら変更ボタンを隠す・textfieldにゲスト閲覧と表示し、("login"ならばボタンを可視化・textfieldは空文字、)となる様にしています。
以下はプロフィール画面に対応するクラスのviewWillApearです。
swift
1 @IBOutlet var iconImageView: UIImageView! 2 @IBOutlet var nameTextField: UITextField! 3 @IBOutlet var tapImage: UITapGestureRecognizer! 4 @IBOutlet var changeProfButton: UIButton! 5 6 var ref: DatabaseReference! 7 let userDefault = UserDefaults.standard 8 9 override func viewWillAppear(_ animated: Bool) { 10 super.viewWillAppear(true) 11 12 let check = userDefault.object(forKey: "check") 13 let ref = Database.database().reference() 14 print(check!) 15 16 //ゲスト閲覧ならばプロフ変更を許可しない 17 if String(describing: check) == "guest" { 18 nameTextField.text = "ゲスト閲覧" 19 nameTextField.isEnabled = false 20 iconImageView.image = UIImage(named: "user.png") 21 tapImage.isEnabled = false 22 changeProfButton.isHidden = true 23 24 //正規ユーザーの場合の名前と画像をセット 25 } else if String(describing: check) == "login" { 26 nameTextField.isEnabled = true 27 tapImage.isEnabled = true 28 changeProfButton.isHidden = false 29 } 30 31 32 } 33
これの状態でゲスト閲覧を選択し、プロフィール画面を開いても、画像の様にボタンは消えず、textfieldのゲスト閲覧も表示されませんでした。
ログイン画面でcheckの値である"guest"がきちんと保存されてないのかと思い、print(check!)を追加してプロフィール画面を開いて見たのですが、きちんとデバッグエリアにguestと表示されていました。
私はif String(describing: check) == "guest"が機能せず、それ以下の命令が弾かれていることが原因だとは思うのですが、この書き方の何が問題になっているのでしょうか?
また、登録済みのユーザーとそうでないユーザーの判別法について私はこの方法しか知らないのですが、自分はこうやっている。などありましたら一言教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/23 23:34
2018/03/24 03:58
2018/03/25 06:32