【问题标题】:How to pass NSManagedObjectContext in <Window Controller with Sidebar> Application to Storyboard views?如何将 <Window Controller with Sidebar> 应用程序中的 NSManagedObjectContext 传递给 Storyboard 视图?
【发布时间】:2021-04-27 17:53:06
【问题描述】:

如何在 Storyboard 视图中获取 NSPersistentDocument ? 使用:iMac、coreData、Storyboard 和 Swift

只要我只有一个视图,应用程序就可以正常运行:

guard let document = self.view.window?.windowController?.document as? NSPersistentDocument,
      let context = document.managedObjectContext else {
    return []
}

...我手动拥有 managedObjectContext。

然后我将我的应用切换到新样式的餐具柜:

如果我在我的 ViewControllers 中使用与上面相同的代码(如屏幕截图中的 DocumentViewController),它会失败,因为 document 是 nil。 这可能是时间问题。在哪里放置代码,例如 viewDidLoad 或 viewDidAppear。

如果我可以为 manageObjectContext 使用“全局变量”就足够了;在 makeWindowControllers 下设置。但我所有的方法都失败了..

【问题讨论】:

    标签: swift core-data storyboard


    【解决方案1】:

    好的,我找到了一个好方法。

    • 一切以 NSDocument 开始,makeWindowControllers()。在这里,NSManagedObjectContext 可用 - 无需创建 NSPersistentcontainer。
    • 接下来,将 makeWindowControllers() 中的 NSManagedObjectContext 传递给 ViewController 的代表对象。
    • 从这个 ViewController,启动所有其他 ViewController 并传递 NSManagedObjectContext

    在下图中找到更多详细信息。

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      相关资源
      最近更新 更多