如何在Swift中通过AppDelegate设置变量值?

时间:2017-11-30 21:07:26

标签: ios swift

我在UIViewController中有Main.storyboard,并将其标识符设置为settings。我引用Main.storyboard并在AppDelegate中获取视图控制器,然后设置位于视图控制器中的变量的值,但它返回nil。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    if let settingViewController = mainStoryboardIpad.instantiateViewController(withIdentifier: "settings") as UIViewController? {
        let settingVC = settingViewController as! SettingViewController
        settingVC.moc = persistendContainer.viewContext
    }

    return true
}

我在SettingViewController中有以下变量:

var moc: NSManagedObjectContext!

我确认我能够Main.storyboardSettingViewControllerpersistentContainer.viewContext有价值。

1 个答案:

答案 0 :(得分:2)

您正在成功实例化新设置UIViewController,但之后没有任何反应。稍后您的应用程序将通过故事板创建一个Settings viewController,但这将是另一个。

更好的方法是为viewController创建一个可访问的位置来访问moc变量,而不是尝试提前传递它。如果您让Xcode创建设置了CoreData的项目,通常会为您完成此操作。您可以在应用中的任何viewController中说出(UIApplication.shared.delegate as! AppDelegate).managedObjectContext,并获取指向该moc的指针。