Прошло некоторое время с тех пор, как я занялся CoreData и macOS, во времена xib и nib. С xib существует «владелец файла», который может предоставить вам доступ к вашему документу и управляемому объекту. Легко.NSPsistentDocument, Swift, macOS и раскадровки - как получить managedObjectContext?
С NSPersistentDocument и моей раскадровкой у меня проблема с курицей и яйцом. В моем классе документа, наследнике NSPersistentDocument, у меня есть следующее:
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 я хочу иметь Object Controller, и он должен быть привязан к управляемому объектуObjectContext, но когда ему нужно иметь managedObjectContext, я еще не установил selfObject для себя. Таким образом, исключение выбрасывается. Установка объекта createdObject в конце метода makeWindowControllers слишком поздно, но я все равно не вижу его раньше.