xib と nib の時代に戻って、CoreData と macOS に取り組んでからしばらく経ちました。xib には、ドキュメントと managedObjectContext へのアクセスを許可できる「ファイルの所有者」があります。簡単。
NSPersistentDocument と私のストーリーボードでは、鶏が先か卵が先かという問題が少しあります。NSPersistentDocument からサブクラス化された私の Document クラスには、次のものがあります。
override func makeWindowControllers() {
// Returns the Storyboard that contains your Document window.
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let windowController = storyboard.instantiateControllerWithIdentifier("Document Window Controller") as! NSWindowController // <- when I need the moc
self.addWindowController(windowController)
windowController.contentViewController!.representedObject = self // <- when I set the representedObject
}
これは、Apple を含む多くの人々が提案しているようです。
私の問題はこれです: MainViewController では、オブジェクト コントローラーが必要で、それを managedObjectContext にバインドする必要がありますが、managedObjectContext が必要な場合は、presentedObject を self にまだ設定していません。したがって、例外がスローされます。makeWindowControllers メソッドの最後にpresentedObjectを設定するのは遅すぎますが、とにかく早く取得する方法がわかりません。