2016-07-04 16 views
8

Also arbeite ich an einer neuen App und ich benutze Firebase, um alle Backend-Sachen mit Benutzer-Logins usw. zu verwalten, ich habe einen Login/Anmeldebildschirm für die Benutzer erstellt, wenn Sie laden die App. Was ich versuche zu tun, ist das HomeScreenVC laden, wenn der Benutzer bereits angemeldet ist und wenn der Benutzer nicht ist, dann würden sie zum Login/Register vc geleitet werden.Firebase + Swift: Benutzer Login-Bildschirm umgehen

Ich habe es funktioniert in dem Sinne, dass es funktioniert, wenn der Benutzer bereits ein currentUser ist, aber das Problem, das ich habe, ist, wenn der Benutzer nie die App geladen hat, dann stürzt es ab, da es currentUser nicht erkennen kann .

Mein Code, den ich in der AppDelegate haben ist:

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 
} 

Dies ist der Fehler i erhalten: here

Jede Hilfe wäre toll! Ich benutze die neueste Version von Firebase und Swift 2.

Antwort

7

Sie sind gezwungen, nil auf dieser Linie auszupacken, was den Absturz verursacht. Entfernen Sie die ! von FIRAuth.auth()?.currentUser!

+0

Arbeitete !! Ich danke dir sehr!!!! – Konsy

0

Update für eine schnelle 3 und Feuerbasis 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 
}