Экземпляр IOS 13 UIWindow равен нулю во время запуска приложения - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь передать мой managedObjectContext следующему контроллеру. Я присваиваю экземпляр UIWindow в своем файле appDelegate, так как мне нужно получить контроллер stand-by. Тем не менее, Xcode сказал, что мой экземпляр UIWindow равен нулю.

Это мой код:

lazy var managedObjectContext: NSManagedObjectContext = persistentContainer.viewContext

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    let tabController = window!.rootViewController as! UITabBarController
    if let tabViewControllers = tabController.viewControllers {
        let navController = tabViewControllers[0]  as! UINavigationController
        let controller = navController.viewControllers.first as! CurrentLocationViewController
        controller.managedObjectContext = managedObjectContext
    }

    return true
}

Debug

enter image description here enter image description here

Это немного странно. Как решить это? Заранее спасибо.

1 Ответ

4 голосов
/ 01 октября 2019

Окно IOS 13 находится внутри SceneDelegate, а до 13 - внутри AppDelegate

Перемещение кода внутри SceneDelegate

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    let tabController = window!.rootViewController as! UITabBarController
    if let tabViewControllers = tabController.viewControllers {
       let navController = tabViewControllers[0]  as! UINavigationController
       let controller = navController.viewControllers.first as! CurrentLocationViewController
       controller.managedObjectContext = managedObjectContext
     }
}
...