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

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

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

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

Xcode 4

Xcode 4はMac OS Xを使ってMac OSとiOSをターゲットとしたソフトウェアを開発するための主な開発ツールです。

Xcode

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

Swift

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

解決済

Cannot find 'Auth' in scopeを直したい

Iori12
Iori12

総合スコア13

Firebase

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

Xcode 4

Xcode 4はMac OS Xを使ってMac OSとiOSをターゲットとしたソフトウェアを開発するための主な開発ツールです。

Xcode

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

Swift

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

1回答

0リアクション

0クリップ

420閲覧

投稿2022/09/17 03:06

前提

ログイン機能付きの画面を作っています。
https://youtu.be/KEvA0sSpOMo
上記の動画を見ながら作っている初心者です。
FirebaseAuthの導入部分です。
環境
MacBook Air
xcode14
swift storyboard

実現したいこと

Cannot find 'Auth' in scopeを直したい

発生している問題・エラーメッセージ

Cannot find 'Auth' in scope

該当のソースコード

swift

import UIKit import Firebase import FirebaseAnalytics class ViewController: UIViewController { @IBOutlet weak var registerbuttom: UIButton! @IBOutlet weak var emailTextField: UITextField! @IBOutlet weak var passwordTextField: UITextField! @IBOutlet weak var usernameTextField: UITextField! @IBAction func renegisterbutton(_ sender: Any) { handleAuthToFirebase() print("renegisterbuttom") } private func handleAuthToFirebase() { guard let email = emailTextField.text guard let password = passwordTextField.text Auth.auth().createUser(withEmail: email, password: password) { (res,err) in if let err = err { print("認証に失敗しました") } } } override func viewDidLoad() { super.viewDidLoad() registerbuttom.isEnabled = false registerbuttom.layer.cornerRadius = 10 registerbuttom.backgroundColor = UIColor.rgb(red: 225, green: 221, blue: 187) emailTextField.delegate = self passwordTextField.delegate = self usernameTextField.delegate = self NotificationCenter.default.addObserver(self, selector: #selector(showKeyboard), name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(hideKeyboard), name: UIResponder.keyboardWillHideNotification, object: nil) } @objc func showKeyboard(notification: Notification) { let keyboardFrame = (notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as AnyObject).cgRectValue guard let keyboardMinY = keyboardFrame?.minY else { return } let registerButtomMaxY = registerbuttom.frame.maxY let deistance = registerButtomMaxY - keyboardMinY + 20 let transform = CGAffineTransform(translationX: 0, y: -deistance) UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: { self.view.transform = transform }) //print("keyboardMinY : ", keyboardMinY, "registerButtomMaxY: ", registerButtomMaxY) } @objc func hideKeyboard() { UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: { self.view.transform = .identity }) } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { self.view.endEditing(true) } } extension ViewController: UITextFieldDelegate { func textFieldDidChangeSelection(_ textField: UITextField) { let emailIsEmpty = emailTextField.text?.isEmpty ?? true let passwordIsEmpty = passwordTextField.text?.isEmpty ?? true let usernameIsEmpty = usernameTextField.text?.isEmpty ?? true if emailIsEmpty || passwordIsEmpty || usernameIsEmpty { registerbuttom.isEnabled = false registerbuttom.backgroundColor = UIColor.rgb(red: 225, green: 221, blue: 187) } else { registerbuttom.isEnabled = true registerbuttom.backgroundColor = UIColor.rgb(red: 225, green: 141, blue: 0) } } }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/09/17 08:07

こちらの質問が他のユーザーから「過去に投稿した質問と同じ内容の質問」という指摘を受けました。

tsuki01

2022/09/17 04:11 編集

検証していないので動作しなかったらすみません。 参考にしている動画のコメントにある通り、以下2つのimport分を追記したら改善したりしませんでしょうか。 ※"import FirebaseAnalytics"の下とかに追記する import FirebaseAuth import FirebaseFirestore
Iori12

2022/09/17 04:15 編集

エラーは取り除かれるのですが、 import FirebaseAuthにエラーが発生します。 No such module 'FirebaseAuth' と出てきます
tsuki01

2022/09/17 04:34

import FirebaseAuth にエラーが出たから、以下の情報とかを参照して「import FirebaseAnalytics」に変えたとかでしょうか。 https://teratail.com/questions/btn939tp7wlxko パッと原因が分からないので、Podファイルの内容と修正の経緯も追記して頂けると助かります。 (他の回答者さんにも情報が伝わるため)
Iori12

2022/09/17 04:38

そうですね。その情報を参照して[import FirebaseAnalytics]に変えましたね。 Podfileが自分にはあまり理解できず動画どうりにやったので、もしかしたらそこに問題があるかもしれません podfileの中身です。 # Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'mattingapp' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for mattingapp pod 'RealmSwift' pod 'FirebaseAnalytics' pod 'Firebase/Auth' target "mattingapp" do inherit! :search_paths end # Add the pods for any other Firebase products you want to use in your app # For example, to use Firebase Authentication and Cloud Firestore pod 'FirebaseAuth' pod 'FirebaseFirestore' end
tsuki01

2022/09/17 05:44

追記ありがとうございました。 他に原因ありそうなものを挙げさせて頂きます。どれも対応済みだったり問題なかったらすみません。 1、プロジェクトを開く際に、拡張子が「〜.xcodeproj」ではなく「〜.xcworkspace」の方から開いてますでしょうか 2、Auth系の記述をPodファイルに記載したあと、間違いなくPod Updateしていますでしょうか ※Xcodeのプロジェクト一覧の中に、以下のフォルダがあればAuth系のライブラリが問題なく取り込まれている確認ができるのかなと思いました。 [Pods] > [Pods] > [FirebaseAuth]
Iori12

2022/09/17 05:56

1は拡張子は「〜.xcodeproj」になっていました。 2なのですがFirebaseAuthの中にPodsはありませんでした。
tsuki01

2022/09/17 06:10

1ですが、Podインストールが正常に完了していると、「〜.xcworkspace」というファイルもプロジェクトフォルダ配下にあるはずです。なので、「〜.xcworkspace」からプロジェクトを開いてみてください。 もし「〜.xcworkspace」のファイルが無い様でしたら、Podインストールが完了していない可能性があります。 ※動画のリンク貼っておきます(現在参考にしている動画の、ひとつ前の動画になります) https://youtu.be/1dCGHYYYrEY?t=434 2については、"FirebaseAuthの中にPods"ではなく、"Podsの中にFirebaseAuth"となるので、階層が逆になります。必要あれば、後ほど解答欄に画像貼らせていただきます。
Iori12

2022/09/17 06:15

1はcocoapodsのインストールからやり直せばいいということでしょうか 2についてはpodsの中にFirebaseAuthはありませんでした。 今回が初めてXcodeを使うので理解できていない部分が多くすみません。
tsuki01

2022/09/17 06:29

> 1はcocoapodsのインストールからやり直せばいいということでしょうか 最終確認ですが、拡張子が「〜.xcworkspace」のファイル自体無いという認識で大丈夫でしょうか? なければ、「pod init」コマンドあたりからやり直せば大丈夫と思います。 ※cocoapods自体のインストールは不要。 > 2についてはpodsの中にFirebaseAuthはありませんでした。 ということは、ライブラリがインストール出来ていないのかなと思います。 インストールできていないから、ソースコード上でエラーが出ている可能性があります。 > 今回が初めてXcodeを使うので理解できていない部分が多くすみません。 いえいえ。こちらも直ぐに解決策を出せずで申し訳ないです。 改めて動画を参照しつつ、解決できたら良いですね
Iori12

2022/09/17 16:11 編集

動画どうりにやっているはずなのですが「pod init」と記述するとExisting Podfile found in directoryと出てきてできません。やり方を調べたのですがいまいちわかりませんでした。どうすればいいでしょうか
tsuki01

2022/09/18 12:26 編集

> 「pod init」と記述するとExisting Podfile found in directoryと出てきてできません。 上記のエラーメッセージが出てきたということは、既にPodファイルが存在するプロジェクトでやり直したってことですよね。(新規プロジェクトを作成してやり直したのではなく、途中のプロジェクトからやり直した認識) であれば、Podファイルへの"FirebaseAuth"の追記と、「pod update」あたりからやり直してみるのはどうでしょうか。 「pod update」時に、ターミナルにエラーが発生していないこともご確認お願いします。 ・参考動画部分:https://youtu.be/KEvA0sSpOMo?t=279
tsuki01

2022/09/18 12:32

度々すみません。 拡張子が「〜.xcworkspace」のファイルが無いってお話だったので、「pod install」あたりの手順からやり直す必要がありそうですね。
Iori12

2022/09/19 04:28

pod installと入力するとThe target `mattingapp` is declared multiple times.とエラーが出てきます。 どうすればいいでしょうか?もう何度も何度もすみません
tsuki01

2022/09/19 06:05

「target 'mattingapp' do 〜 end」の記載が二つあるので、「複数宣言されている」というエラーだと思います。 そのため、最初の「pod install」自体が失敗していた可能性があります。 podの不備はこちらも見落としていて失礼しました。質問者さんの方でも、動画の見直しお願いいたします。 とりあえずPodファイルの記載を以下のように修正したら、Auth系のエラーが解消しませんでしょうか? ※実際に記載する時は点線不要です。また、不足しているライブラリの宣言があれば、適宜追加お願いします。 ---------------------------------------- # Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'mattingapp' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for mattingapp pod 'RealmSwift' pod 'Firebase/Analytics' pod 'Firebase/Auth' pod 'Firebase/Firestore' end ----------------------------------------
Iori12

2022/09/20 03:30

動画を見直すことですが、見直して手順通りやってこのエラーが出るので先に進むことができませんでした。 tsuki01さんの貼ってくださったコードをコピペし「pod install」をしたとこ 「[IMPORTANT] Don't forget to include the Crash Report log file under DiagnosticReports directory in bug reports.」 とでてきました。Firebase Authのエラーは消えませんでした。
tsuki01

2022/09/20 04:45

今回のプロジェクトに関係なく、Cocoapodが正常に動いてないのではないでしょうか。 お使いのMacbookAirは、M1チップの機種だったりしませんか? 問題の切り分けのために、新規プロジェクトでCocoapodのライブラリインストール手順だけ試してみてください。「pod install」で同様のエラーが発生するなら、Cocoapodの環境などに問題あります。 別途、Cocoapodに関する質問を投稿して頂いた方が良いかもしれません。
Iori12

2022/09/21 04:10 編集

cocoapodsをM1チップ用のダウンロード方法にしたところ解決できました。長い期間助言をくださり、解決方法も提案してくださりありがとうございます
tsuki01

2022/09/21 12:41

最終的に自己解決できた様で良かったです。 お手数ですが、最後に行った手順(cocoapodsのコマンドなど)を自己解決として投稿し、この質問のクローズをお願いいたします。 ※自己解決としてクローズしないと質問が未解決として残ってしまうのと、他の方の参考のためにもお願いします。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Firebase

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

Xcode 4

Xcode 4はMac OS Xを使ってMac OSとiOSをターゲットとしたソフトウェアを開発するための主な開発ツールです。

Xcode

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

Swift

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