2014-10-19 2 views
2

Xcode 6.1 имеет совершенно новый шаблон для приложений на основе документов, которые используют Core Data. Теперь нет необходимости подклассифицировать NSWindowController, потому что в 10.10 NSViewController обладает гораздо большей мощностью и включен в шаблон в качестве диспетчера представлений по умолчанию. Там даже AppDelegate по умолчанию, что здорово.Новый шаблон для ОС OS X в Xcode 6.1

Но я застрял в очень тупой ситуации. Я использую Core Data. И я не могу получить currentDocument при загрузке приложения! Я серьезно! Весь стек MVC вызывается до того, как приложение завершит запуск. У меня есть некоторые объекты, которые нужно нарисовать на основе элементов Core Data, которые имеют экземпляр NSPersinstentDocument. Но когда вызывается viewDidLoad ViewController, нет способа получить этот экземпляр. Невозможно получить в настоящее время созданный/открытый документ.

  1. NSDocumentController.sharedDocumentController(). CurrentDocument is nil.
  2. self.view.window.windowsController.currentDocument - это нуль.
  3. NSApplication.sharedApplication(). Windows [0] .windowsController.currentDocument равен нулю.

Что мне делать? Это ошибка, или мне действительно нужно пропустить код в viewDidLoad и создать какой-то метод, например loadUIStuffNow, и вызвать его из applicationDidFinishLaunching моего App Delegate?

ответ

2

Я сделал это через свойство представленное объектами NSViewController. Я добавил простую линию в makeWindowControllers() моего NSPersistentDocument подкласса

windowController.contentViewController?.representedObject = self 

И переехал весь мой код из viewDidLoad в didSet наблюдателя собственности representedObject. И использовал представленный объект как MyDocument для доступа ко всем имеющимся мне данным. Невероятно просто!

+0

Я ударился головой об этом! благодаря! – markich

Смежные вопросы