前提・実現したいこと
Firebaseでメールリンクを使用してユーザー登録を行うという処理を書いています。
ただ以下のようなエラーが出ています。教えて欲しいです。
よろしくお願いします。
発生している問題・エラーメッセージ
Value of type 'AccountViewController' has no member 'auth'
該当のソースコード
Swift
1import UIKit 2import Firebase 3 4var auth: Auth! 5 6class AccountViewController: UIViewController { 7 8 9 @IBOutlet var emailTextField: UITextField! 10 @IBOutlet var passwordTextField: UITextField! 11 @IBOutlet var usernameTextField: UITextField! 12 13 14 override func viewDidLoad() { 15 super.viewDidLoad() 16 auth = Auth.auth() 17 emailTextField.delegate = self 18 passwordTextField.delegate = self 19 usernameTextField.delegate = self 20 21 } 22 23 24 override func viewDidAppear(_ animated: Bool) { 25 super.viewDidAppear(animated) 26 if auth.currentUser != nil { 27 auth.currentUser?.reload(completion: { error in 28 if error == nil { 29 if self.auth.currentUser.isEmailVerified == true { 30 self.performSegue(withIdentifier: "Home", sender: self.auth.currentUser!) 31 } else if self.auth.currentUser.isEmailVerified == false { 32 let alert = UIAlertController(title: "確認用メールを送信しているので確認をお願いします。", message: "まだメール認証が完了していません。", preferredStyle: .alert) 33 alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) 34 self.present(alert, animated: true, completion: nil) 35 } 36 } 37 }) 38 } 39 } 40 41 42 43 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 44 if segue.identifier == "Home" { 45 segue.destination.modalPresentationStyle = .fullScreen 46 let nextViewController = segue.destination as! HomeViewController 47 let user = sender as! User 48 nextViewController.me = AppUser(data: ["userID" : user.uid]) 49 } 50 } 51 52 53 54 55 @IBAction func registerAccount(_ sender: Any) { 56 let email = emailTextField.text! 57 let password = passwordTextField.text! 58 let username = usernameTextField.text! 59 auth.createUser(withEmail: email, password: password) { (result, error) in 60 if error == nil, let result = result { 61 result.user.sendEmailVerification(completion: { (error) in 62 if error == nil { 63 let alert = UIAlertController(title: "仮登録を行いました。", message: "入力したメールアドレス宛に確認メールを送信しました。", preferredStyle: .alert) 64 alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) 65 self.present(alert, animated: true, completion: nil) 66 } 67 }) 68 } 69 } 70 } 71 72} 73 74// デリゲートメソッドは可読性のためextensionで分けて記述します。 75extension AccountViewController: UITextFieldDelegate { 76 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 77 textField.resignFirstResponder() 78 return true 79 } 80}
補足情報(FW/ツールのバージョンなど)
if self.auth.currentUser.isEmailVerified == true {
と
self.performSegue(withIdentifier: "Home", sender: self.auth.currentUser!)
と
} else if self.auth.currentUser.isEmailVerified == false {
の3つの箇所に
Value of type 'AccountViewController' has no member 'auth'のエラーが出ています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。