Прямо сейчас я обращаюсь к NSPersistentContainer через синглтон UIApplication для передачи на главный контроллер, но должен быть более удобный способ передачи данных из AppDelegate в SceneDelegate, который в данном случае NSPersistentContainer.Возможно с помощью метода конфигурации для подключения?
AppDelegate.swift
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
SceneDelegate.swift
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate, UISplitViewControllerDelegate {var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let splitViewController = window?.rootViewController as! UISplitViewController
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
splitViewController.delegate = self
let masterNavigationController = splitViewController.viewControllers[0] as! UINavigationController
let controller = masterNavigationController.viewControllers.first as! MasterViewController
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let persistentContainer = appDelegate.persistentContainer
controller.managedObjectContext = persistentContainer.viewContext
}
Info.plist
<dict>
<key>UISceneClassName</key>
<string>UIWindowScene</string>
<key>UISceneDelegateClassName</key>
<string>SceneTest.SceneDelegate</string>
<key>UISceneConfigurationName</key>
<string>Default</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</plist>