2016-07-04 48 views
8

Quindi sto lavorando a una nuova app e sto utilizzando Firebase per gestire tutte le cose di back-end con gli accessi degli utenti, ecc. Ho creato una schermata di accesso/registrazione per gli utenti quando caricano l'app. Quello che sto cercando di fare è caricare HomeScreenVC se l'utente è già loggato e se l'utente non lo è, verrà indirizzato al login/registro vc.Firebase + Swift: Ignora schermata di accesso utente

Mi piace farlo funzionare nel senso che funziona se l'utente è già un utente corrente ma il problema che sto avendo è che se l'utente non ha mai caricato l'app allora si blocca perché non può rilevare currentUser .

Il mio codice ho nel AppDelegate è:

var window: UIWindow? 
var storyboard: UIStoryboard? 


func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    FIRApp.configure() 

    self.storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) 
    let currentUser = FIRAuth.auth()?.currentUser! 
    if currentUser != nil 
    { 
     self.window?.rootViewController = self.storyboard?.instantiateViewControllerWithIdentifier("tabVC") 
    } 
    else 
    { 
     self.window?.rootViewController = self.storyboard?.instantiateViewControllerWithIdentifier("loginScreen") 
    } 
    return true 
} 

Questo è l'errore che ottengo: here

Qualsiasi aiuto sarebbe grande! Sto usando l'ultima versione di Firebase e Swift 2.

risposta

7

Sei forzato a scartare nil su quella linea, causando l'arresto. Rimuovere il ! da FIRAuth.auth()?.currentUser!

+0

Ha lavorato !! Grazie mille!!!! – Konsy

0

aggiornamento per rapida 3 e Firebase 4,8

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    UIApplication.shared.statusBarStyle = .lightContent 
    // Override point for customization after application launch. 
    // add firebase 
    FirebaseApp.configure() 

    // check user status then set initial Viewcontroller 

    self.window = UIWindow(frame: UIScreen.main.bounds) 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let startMainVC = storyboard.instantiateViewController(withIdentifier: "MainVC") 
    let startIntroVC = storyboard.instantiateViewController(withIdentifier: "IntroVC") 

    // check if user is logged 
    if authProvider.Instance.userStatus() == true{ 

     self.window?.rootViewController = startMainVC 
    } 
    else 
    { 
     self.window?.rootViewController = startIntroVC 
    } 

    return true 
}