2016-05-20 44 views
16

Aggiornamento al nuovo firebase. Creato un nuovo accesso VC e tutto funzionava bene in termini di assenza di errori.Utilizzo dell'identificatore non risolto "FIRAuth" (Swift 2, Firebase 3.x)

Cercando di replicare questo nuovo tutorial: https://codelabs.developers.google.com/codelabs/firebase-ios-swift/index.html?index=..%2F..%2Findex#0

Ora tutto ad un tratto sto ottenendo l'errore L'utilizzo di identificatore irrisolto 'FIRAuth' tutto il mio VC.

Ho provato a reinstallare il file dei pod e non ho avuto fortuna, a volte sembra che aggiunga "import Firebase" quindi rimuoverlo, l'app verrà compilata, sembra che non ci sia alcuna rima o motivo per perché funziona a volte e altre volte non lo fa:

Ecco il mio codice:

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) 
} 

} 

qualcuno ha qualche idea del perché questo sarebbe successo?

+0

vedere questo link ti aiuta a http://stackoverflow.com/questions/34950777/swift-use-of-unresolved-identifier –

+0

Grazie Anbu , ho appena dato un'occhiata a questa domanda e il mio SignInViewController era già collegato correttamente alla destinazione. Sono in perdita per cos'altro potrebbe essere il problema. – ryanbilak

risposta

5

ho aggiornato Cocoapods e corsi di aggiornamento pod e risolto tutti i miei problemi

3

aggiungere "importazione Firebase" e premere cmd + B

1

Rimuovi questo importazione:

importazione FirebaseAuth

Aggiungere questa dichiarazione, invece. Questo ha funzionato per me.

importazione Firebase

+0

non importa ignorare questa risposta, sto ancora ricevendo errori quando lo eseguo in modo casuale, pulisco il progetto e lo ricostruisco e l'errore scompare. Ma dopo qualche volta incontro lo stesso problema. – user1457303

-2

MeasurementHelper.sendLoginEvent()

AppState.sharedInstance.displayName = user?.displayName ?? user?.email 

AppStateis un unidetified

1

Quando si utilizza Firebase in un UIViewController mi assicuro di importare Firebase e dopo che ho pulito la cache/build (cmd + shift + k) e quindi build (cmd + b).

Sembra funzionare ma devo ripetere il processo ogni volta che costruisco.

EDIT

Se non funziona la prima pulita, solo continuare a pulizia fino a quando lo fa. Non è la soluzione perfetta ma funziona.

+0

Grazie. Questo ha funzionato per me !! – Das

38

Per i lettori futuri:

Assicurarsi di avere includere quanto segue nel Podfile:

pod 'Firebase/Auth'

Dopo aver installato i pod, utilizzare:

import FirebaseAuth

Questo è ciò che ha risolto per me.

4

2016/12/26 Aggiornato con Swift 3 e Firebase 3.11.0
Aggiunga al Podfile

pod 'Firebase/Auth' 

Al tuo posto è necessario utilizzare Auth, basta

import Firebase 

e ricostruire, si cancellare errore.

Questa soluzione è indirizzata da Google. https://firebase.google.com/docs/auth/ios/password-auth

1

prima abbiamo bisogno di aggiungere pod di Firebase Auth in podfile

pod 'Firebase/Auth'

allora abbiamo bisogno di eseguire il terminale con 'pod install'

Secondo al Firebase Doc, abbiamo bisogno di aggiungere importazione firebase sul nostro viewcontroller. ma non risolverà il tuo problema.hai bisogno di aggiungere importazione FirebaseAuth. Ciò rimuove l'errore.

1

Ora è stato rinominato da "FIRAuth" a "Auth"

4

È necessario aggiungere pod 'Firebase/Auth' in archivio pod, importazione Firebase e FirebaseAuth al controller, ora di utilizzare Auth non è FIRAuth.auth(), è Auth.auth().signInAnonymously e il lavoro va bene.

+0

Grazie. La tua risposta è corretta Ora la sintassi è Auth.auth(). CreateUser ecc ... –

0

E looks like E 'ora solo "Auth" e non "FIRAuth"