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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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++と共存することが意図されています

Q&A

解決済

1回答

1252閲覧

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

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++と共存することが意図されています

0グッド

0クリップ

投稿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

1import UIKit 2import Firebase 3import FirebaseAnalytics 4 5class ViewController: UIViewController { 6 7 @IBOutlet weak var registerbuttom: UIButton! 8 @IBOutlet weak var emailTextField: UITextField! 9 @IBOutlet weak var passwordTextField: UITextField! 10 @IBOutlet weak var usernameTextField: UITextField! 11 12 @IBAction func renegisterbutton(_ sender: Any) { 13 handleAuthToFirebase() 14 print("renegisterbuttom") 15 } 16 private func handleAuthToFirebase() { 17 guard let email = emailTextField.text 18 guard let password = passwordTextField.text 19 20 Auth.auth().createUser(withEmail: email, password: password) { (res,err) in 21 if let err = err { 22 print("認証に失敗しました") 23 } 24 } 25 26 } 27 28 override func viewDidLoad() { 29 super.viewDidLoad() 30 31 registerbuttom.isEnabled = false 32 registerbuttom.layer.cornerRadius = 10 33 registerbuttom.backgroundColor = UIColor.rgb(red: 225, green: 221, blue: 187) 34 35 emailTextField.delegate = self 36 passwordTextField.delegate = self 37 usernameTextField.delegate = self 38 39 NotificationCenter.default.addObserver(self, selector: #selector(showKeyboard), name: UIResponder.keyboardWillShowNotification, object: nil) 40 NotificationCenter.default.addObserver(self, selector: #selector(hideKeyboard), name: UIResponder.keyboardWillHideNotification, object: nil) 41 42 } 43 44 @objc func showKeyboard(notification: Notification) { 45 let keyboardFrame = (notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as AnyObject).cgRectValue 46 47 guard let keyboardMinY = keyboardFrame?.minY else { return } 48 let registerButtomMaxY = registerbuttom.frame.maxY 49 let deistance = registerButtomMaxY - keyboardMinY + 20 50 51 let transform = CGAffineTransform(translationX: 0, y: -deistance) 52 53 UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: { 54 self.view.transform = transform 55 }) 56 57 //print("keyboardMinY : ", keyboardMinY, "registerButtomMaxY: ", registerButtomMaxY) 58 } 59 60 @objc func hideKeyboard() { 61 UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: { 62 self.view.transform = .identity 63 }) 64 } 65 66 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 67 self.view.endEditing(true) 68 } 69} 70 71extension ViewController: UITextFieldDelegate { 72 73 func textFieldDidChangeSelection(_ textField: UITextField) { 74 let emailIsEmpty = emailTextField.text?.isEmpty ?? true 75 let passwordIsEmpty = passwordTextField.text?.isEmpty ?? true 76 let usernameIsEmpty = usernameTextField.text?.isEmpty ?? true 77 78 if emailIsEmpty || passwordIsEmpty || usernameIsEmpty { 79 registerbuttom.isEnabled = false 80 registerbuttom.backgroundColor = UIColor.rgb(red: 225, green: 221, blue: 187) 81 } else { 82 registerbuttom.isEnabled = true 83 registerbuttom.backgroundColor = UIColor.rgb(red: 225, green: 141, blue: 0) 84 } 85 86 87 } 88}

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

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

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

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

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

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のコマンドなど)を自己解決として投稿し、この質問のクローズをお願いいたします。 ※自己解決としてクローズしないと質問が未解決として残ってしまうのと、他の方の参考のためにもお願いします。
guest

回答1

0

自己解決

macbook air M1チップ搭載の機種のためcocoapodsが機能しなかった。
M1チップ搭載している場合はターミナルをロゼッタで開けるように、ホームバリューをインストールする。その後cocoapodsをインストールすると正常に作用する。

投稿2022/09/22 02:01

Iori12

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問