web-dev-qa-db-de.com

Verwendung des nicht aufgelösten Bezeichners 'FIRAuth' (Swift 2, Firebase 3.x)

Aktualisierung auf die neue Firebase. Eine neue Anmeldung VC wurde erstellt und alles funktionierte fehlerfrei.

Versuch, dieses neue Tutorial zu replizieren: https://codelabs.developers.google.com/codelabs/firebase-ios-Swift/index.html?index=..%2F..%2Findex#0

Jetzt bekomme ich plötzlich den Fehler Die Verwendung der nicht aufgelösten Kennung 'FIRAuth' in meinem gesamten VC. 

Ich habe versucht, die Pod-Datei erneut zu installieren und hatte kein Glück. Es scheint, dass manchmal, wenn "Import Firebase" hinzugefügt wird, diese entfernt wird, die App kompiliert wird. Es scheint, dass es keinen Reim oder Grund gibt, warum es manchmal funktioniert und manchmal nicht:

Hier ist mein Code: 

import UIKit
import FirebaseAuth


class SignInViewController: UIViewController {

@IBOutlet weak var emailField: UITextField!

@IBOutlet weak var passwordField: UITextField!

override func viewDidAppear(animated: Bool) {
    if let user = FIRAuth.auth()?.currentUser { //error here 
        self.signedIn(user)
    }
}

@IBAction func didTapSignIn(sender: AnyObject) {
    // Sign In with credentials.
    let email = emailField.text
    let password = passwordField.text
    FIRAuth.auth()?.signInWithEmail(email!, password: password!) { //error here (user, error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        self.signedIn(user!)
    }
}
@IBAction func didTapSignUp(sender: AnyObject) {
    let email = emailField.text
    let password = passwordField.text
    FIRAuth.auth()?.createUserWithEmail(email!, password: password!) { // error here(user, error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        self.setDisplayName(user!)
    }
}

func setDisplayName(user: FIRUser) {
    let changeRequest = user.profileChangeRequest()
    changeRequest.displayName = user.email!.componentsSeparatedByString("@")[0]
    changeRequest.commitChangesWithCompletion(){ (error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        self.signedIn(FIRAuth.auth()?.currentUser) //error here
    }
}

@IBAction func didRequestPasswordReset(sender: AnyObject) {
    let Prompt = UIAlertController.init(title: nil, message: "Email:", preferredStyle: UIAlertControllerStyle.Alert)
    let okAction = UIAlertAction.init(title: "OK", style: UIAlertActionStyle.Default) { (action) in
        let userInput = Prompt.textFields![0].text
        if (userInput!.isEmpty) {
            return
        }
        FIRAuth.auth()?.sendPasswordResetWithEmail(userInput!) { //error here (error) in
            if let error = error {
                print(error.localizedDescription)
                return
            }
        }
    }
    Prompt.addTextFieldWithConfigurationHandler(nil)
    Prompt.addAction(okAction)
    presentViewController(Prompt, animated: true, completion: nil);
}

func signedIn(user: FIRUser?) {
    MeasurementHelper.sendLoginEvent()

    AppState.sharedInstance.displayName = user?.displayName ?? user?.email
    AppState.sharedInstance.photoUrl = user?.photoURL
    AppState.sharedInstance.signedIn = true
    NSNotificationCenter.defaultCenter().postNotificationName(Constants.NotificationKeys.SignedIn, object: nil, userInfo: nil)
   // performSegueWithIdentifier(Constants.Segues.SignInToFp, sender: nil)
}

}

Hat jemand eine Idee, warum dies passieren würde? 

21
ryanbilak

Ich habe Cocoapods aktualisiert und ein Pod-Update durchgeführt, und alle meine Probleme wurden behoben

7
ryanbilak

Für zukünftige Leser:

Stellen Sie sicher, dass Sie Folgendes in Ihre Podfile aufnehmen:

pod 'Firebase/Auth'

Nach der Installation der Pods verwenden Sie:

import FirebaseAuth

Das hat es für mich gelöst.

50
aashah7

Aktualisiert 26.12.2016 mit Swift 3 und Firebase 3.11.0
Zur Pod-Datei hinzufügen

pod 'Firebase/Auth'

An Ihrer Stelle müssen Sie nur Auth verwenden 

import Firebase

Reinigen und neu aufbauen, Sie werden den Fehler löschen. 

Diese Lösung wird von Google bezogen https://firebase.google.com/docs/auth/ios/password-auth

5
nynohu

Sie müssen den Pod 'Firebase/Auth' zur Pod-Datei hinzufügen, Firebase und FirebaseAuth in Ihren Controller importieren. Jetzt ist Auth nicht FIRAuth.auth(), ist Auth.auth().signInAnonymously und funktioniert gut.

Fügen Sie "import Firebase" hinzu und drücken Sie cmd + B 

3

Bei der Verwendung von Firebase in einem UIViewController stelle ich sicher, dass Firebase importiert wird. Danach säubere ich den Cache/Build (Cmd + Shift + K) und dann Build (Cmd + B). 

Scheint zu funktionieren, aber ich muss den Prozess jedes Mal wiederholen, wenn ich baue. 

EDIT 

Wenn es beim ersten Reinigen nicht funktioniert, machen Sie einfach weiter, bis es funktioniert. Nicht die perfekte Lösung, aber es funktioniert. 

2
nullforlife

zuerst müssen wir eine Pod von Firebase Auth in der Poddatei hinzufügen

pod 'Firebase/Auth'

Dann müssen wir das Terminal mit ' pod install ' betreiben.

Laut dem Firebase-Dokument Doc müssen wirimport firebaseauf unserem Viewcontroller hinzufügen. Aber es wird Ihr Problem nicht lösen. Sie müssenimportieren FirebaseAuth. Dies wird entfernt der Fehler.

2
Sandu

Diesen Import entfernen:

importiere FirebaseAuth

Fügen Sie stattdessen diese Anweisung hinzu. Das hat bei mir funktioniert. 

firebase importieren

1
user1457303

Nun wurde es von "FIRAuth" in "Auth" umbenannt.

1
Raj0689

Lösung jetzt in Swift 4.2, wo nur "Auth" und nicht "FIRAuth" beschwert wird: "Verwendung des nicht aufgelösten Bezeichners Auth":

Beachten Sie, dass es zwei verschiedene Importe gibt. import Firebase und import FirebaseAuth

Die erste war die meiste Zeit ausreichend, aber manchmal wird der Compiler verwirrt und das Hinzufügen der zweiten Version hilft, die Dinge zu klären.

0
snakeoil

It sieht aus wie es ist jetzt nur "Auth" und nicht "FIRAuth"

0
Levi Lais