Я пытаюсь установить корневой контроллер представления в делегате приложения, основываясь на условии. Когда приложение запускается и устанавливает контроллер корневого представления для контроллера, который имеет код для выявления заднего ViewController, эта ошибка: «Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения»
Делегат приложения
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
let db = Firestore.firestore()
var docRef: DocumentReference!
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let authListener = Auth.auth().addStateDidChangeListener { (auth, user) in
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if user != nil{
var userId = user?.email
docRef = Firestore.firestore().document("user/\(userId!)")
docRef.getDocument(completion: { (docSnapshot, error) in
guard let docSnapshot = docSnapshot, docSnapshot.exists else {return}
let data = docSnapshot.data()
variables.userType = data!["tipo"] as? String ?? ""
})
if variables.userType == "doctor" {
let consulta = storyboard.instantiateViewController(withIdentifier: "ConsultaController")
self.window?.rootViewController = consulta
self.window?.makeKeyAndVisible()
} else if variables.userType == "paciente"{
}
} else {
let consulta = storyboard.instantiateViewController(withIdentifier: "ConsultaController")
self.window?.rootViewController = consulta
self.window?.makeKeyAndVisible()
}
}
return true
}
код в контроллере вида, где сработала ошибка.
EDIT: ошибка сработала при загрузке контроллера начального вида. Начальный контроллер представления определяется условием в делегате приложения
override func viewDidLoad() {
super.viewDidLoad()
setUpSWReveal()
}
func setUpSWReveal(){
menuBtn.target = self.revealViewController()
menuBtn.action = #selector(SWRevealViewController.revealToggle(_:))
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) //error triggered here
self.view.addGestureRecognizer(self.revealViewController().tapGestureRecognizer())
}