Es ist schon eine Weile her, seit ich CoreData und macOS in den Tagen von Xib und Nibs in Angriff genommen habe. Mit einer XIB gibt es den "Eigentümer der Datei", der Ihnen Zugriff auf Ihr Dokument und den managedObjectContext geben kann. Einfach.NSPersistentDocument, Swift, macOS und Storyboards - wie bekomme ich den managedObjectContext?
Mit NSPersistentDocument und meinem Storyboard habe ich ein kleines Problem mit Huhn und Ei. In meiner Dokumentenklasse, subclassed von NSPersistentDocument, habe ich folgende:
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
}
Dies scheint zu sein, was viele Leute, darunter Apple, schlagen.
Mein Problem ist das: In der MainViewController möchte ich einen Objekt-Controller haben und es muss an die managedObjectContext gebunden werden, aber wenn es den managedObjectContext haben muss, habe ich das reprodedObject noch nicht auf self gesetzt. Also wird eine Ausnahme ausgelöst. Das repletedObject am Ende der makeWindowControllers-Methode zu setzen, ist zu spät, aber ich sehe es sowieso nicht, um es früher einzufügen.