我在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.storyboard
,SettingViewController
和persistentContainer.viewContext
有价值。
答案 0 :(得分:2)
您正在成功实例化新设置UIViewController
,但之后没有任何反应。稍后您的应用程序将通过故事板创建一个Settings viewController,但这将是另一个。
更好的方法是为viewController创建一个可访问的位置来访问moc
变量,而不是尝试提前传递它。如果您让Xcode创建设置了CoreData的项目,通常会为您完成此操作。您可以在应用中的任何viewController中说出(UIApplication.shared.delegate as! AppDelegate).managedObjectContext
,并获取指向该moc
的指针。