Ich erstelle eine OS X-App, die Kerndaten, NSDocument, Storyboards und Cocoa-Bindungen verwendet.Wie binden Sie eine Storyboard-Ansicht an eine Core Data-Entität, wenn Sie NSDocument verwenden?
Meine Erwartung ist, dass die folgenden Ereignisse eintritt:
Eine Instanz
MyDocument
(NSDocument
Unterklasse) erstellt.MyDocument
erstellt eine Core DataNSManagedObjectContext
, die die Daten des Dokuments darstellt.MyDocument
Instanziiert eineNSWindowController
aus dem Storyboard durch seine Kennung.Innerhalb des Storyboards enthält der Fenstercontroller
DocumentEditorViewController
(NSViewController
Unterklasse), der das Dokument anzeigt und bearbeitet.Im Storyboard,
DocumentEditorViewController
hat eineNSArrayController
, dieMyDocument
‚s verwaltete Objekt Kontext gebunden ist.Im Storyboard,
DocumentEditorViewController
hat eine Tabellenansicht, die auf dieNSArrayController
gebunden ist.
Auf diese Weise Änderungen in der Benutzeroberfläche an die ohne Klebstoff Code NSManagedObjectContext
, den ganzen Weg machen.
Ich erwarte, dass dies unkompliziert ist, da ich glaube, dass ich diese Technologien so nutze, wie sie gedacht sind. Jedoch konnte ich die Bindungen nicht zum Laufen bringen, besonders in den Schritten 5 und 6. Alle von mir gefundenen Projektvorlagen und Beispielprojekte verwenden entweder keine Core-Daten, verwenden keine Storyboards oder verwenden sie nicht NSDokumente.
Welche Objekte sollen an welche gebunden werden? Was sollten NSArrayControllers Klasse, Schlüssel und Schlüsselpfad sein?
Eine andere Möglichkeit, diese Frage zu beantworten, besteht darin, auf ein funktionierendes Beispielprojekt hinzuweisen, das all diese Technologien zusammen verwendet.
Sie verwenden einen separaten 'NSManagedObjectContext' für jedes Dokument? Ist das der empfohlene Weg in OSX/Dokumenten-basierten Apps? In (nicht dokumentenbasierten) iOS-Apps verwende ich normalerweise einen einzelnen Kontext (gehört dem Anwendungsdelegaten) und separate Instanzen von 'NSManagedObject' für jedes Modellobjekt ... –
Ich sehe keine Beispiele oder Anleitungen von Apple, die deine Frage beantworten. Ich denke, dass separate Kontexte für verwaltete Objekte sinnvoller sind, da die Dokumente vollständig unabhängig sind. Es macht für mich keinen Sinn, ihre Daten in einen einzigen Kontext zu mischen und dann den gesamten Zugriff auf den Kontext für die Teilmenge der Daten der aktuellen Ansicht zu filtern. –
Haben Sie einen Testfall ausprobiert, in dem Sie programmgesteuert ein paar MOC-Objekte hinzufügen und in der Tabellenansicht angezeigt werden? Es ist nicht klar, wenn Sie auf 5 & 6 verweisen, wenn Sie versucht haben, die Bindungen zu debuggen, und zwar unabhängig von der Fähigkeit des AC, Inhalte zu erstellen. – stevesliva