質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1132閲覧

Value of type 'AccountViewController' has no member 'auth'のエラーを解決したいです。

monokuro08

総合スコア12

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/12/05 11:13

前提・実現したいこと

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'のエラーが出ています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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 var auth: Auth! // <-ここに書いて試してみたください 14 15 override func viewDidLoad() { 16 super.viewDidLoad()

これでどうでしょうか?

投稿2019/12/05 14:02

hameji

総合スコア1380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

self.authが存在しない、といってます。
それはどこで定義してますか?

投稿2019/12/05 11:43

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問