以下のコードを記述すると、
Cannot use instance member 'self' within property initializer; property initializers run before 'self' is available
というエラーが表示されます。
これは何を指摘していますか?
import UIKit import Firebase import FirebaseAuthUI import FirebaseEmailAuthUI import FirebaseFacebookAuthUI import FirebaseGoogleAuthUI import FirebaseAnonymousAuthUI import FirebaseOAuthUI class LoginViewController: UIViewController,FUIAuthDelegate { var authUI: FUIAuth { get { return FUIAuth.defaultAuthUI()!}} //認証に使用するプロバイダの選択 let providers: [FUIAuthProvider] = [FUIGoogleAuth(authUI: self().authUI),FUIFacebookAuth(authUI: self().authUI),FUIEmailAuth()] override func viewDidLoad() { super.viewDidLoad() // authUIのデリゲート self.authUI.delegate = self self.authUI.providers = providers // FirebaseUIのViewの取得 let authViewController = self.authUI.authViewController() // FirebaseUIのViewの表示 self.present(authViewController, animated: true, completion: nil) // Do any additional setup after loading the view. } // 認証画面から離れたときに呼ばれる(キャンセルボタン押下含む) public func authUI(_ authUI: FUIAuth, didSignInWith user: User?, error: Error?){ // 認証に成功した場合 if error == nil { self.performSegue(withIdentifier: "Home", sender: nil) } else { //失敗した場合 print("error") } }
Swift では、プロパティを初期化する段階では、まだそのオブジェクト (self) の初期化が終わってないので self は使えないんですよね。というか self() とは…?
あなたの回答
tips
プレビュー