【问题标题】:New Document-based OS X app template in Xcode 6.1Xcode 6.1 中新的基于文档的 OS X 应用程序模板
【发布时间】:2014-10-19 12:53:47
【问题描述】:

Xcode 6.1 为使用 Core Data 的基于文档的应用程序提供了全新的模板。现在不需要继承 NSWindowController 子类,因为在 10.10 中,NSViewController 具有更多的功能,并且作为默认视图管理器包含在模板中。默认情况下甚至还有 AppDelegate,这很棒。

但我陷入了非常愚蠢的境地。我正在使用核心数据。而且我在应用加载时无法获取 currentDocument!我是认真的!在应用程序完成启动之前调用所有 MVC 堆栈。我有一些需要基于具有 NSPersinstentDocument 实例的核心数据项绘制的对象。但是当 ViewController 的 viewDidLoad 被调用时,没有办法得到那个实例。无法获取当前创建/打开的文档。

  1. NSDocumentController.sharedDocumentController().currentDocument 为零。
  2. self.view.window.windowsController.currentDocument 为零。
  3. NSApplication.sharedApplication().windows[0].windowsController.currentDocument 为零。

我该怎么办?这是一个错误,或者我真的必须跳过 viewDidLoad 中的代码并创建一些类似 loadUIStuffNow 的方法并从我的 App Delegate 的 applicationDidFinishLaunching 调用它?

【问题讨论】:

    标签: cocoa core-data swift xcode6 osx-yosemite


    【解决方案1】:

    我通过 NSViewController 的代表对象属性做到了这一点。 我在我的 NSPersistentDocument 子类的 makeWindowControllers() 中添加了一个简单的行

    windowController.contentViewController?.representedObject = self
    

    并将我的所有代码从 viewDidLoad 移到了代表对象属性的 didSet 观察者。并使用代表对象作为 MyDocument 来访问我需要的所有数据。非常简单!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多