2016-07-04 30 views
8

Pracuję więc nad nową aplikacją i używam Firebase do zarządzania wszystkimi plikami backendowymi z logowaniem użytkownika itp. Stworzyłem ekran logowania/rejestracji dla użytkowników, gdy ładują aplikację. Co staram się zrobić, to załadować HomeScreenVC, jeśli użytkownik jest już zalogowany, a jeśli użytkownik nie jest, to zostanie skierowany do logowania/rejestru vc.Firebase + Swift: Pomiń ekran logowania użytkownika

W pewnym sensie działa to w tym sensie, że działa, jeśli użytkownik jest już użytkownikiem currentUser, ale problem polega na tym, że jeśli użytkownik nigdy nie załadował aplikacji, to ulega awarii, ponieważ nie może wykryć currentUser .

Mój kod mam w AppDelegate jest:

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 
} 

Jest to błąd pojawia się: here

Każda pomoc będzie wielki! Korzystam z najnowszej wersji Firebase i Swift 2.

Odpowiedz

7

Odwzorujesz zero na tej linii, powodując awarię. Usunąć ! z FIRAuth.auth()?.currentUser!

+0

Pracował !! Dziękuję bardzo!!!! – Konsy

0

aktualizacja dla szybkiej 3 i 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 
} 
Powiązane problemy