Ich habe ein paar Fragen, die ich für mich selbst beantworten wollte (indem ich die Dokumentation durchforste), aber ich habe das Gefühl, dass mir etwas fehlt.Document-based Anwendung für Kerndaten: Wie modelliere und kontrolliere ich eine Entität, die nur einmal pro Dokument instanziiert wird?
Alle Hinweise (und/oder Hinweise auf entsprechende Dokumentation) wären sehr willkommen.
Ich baue eine dokumentenbasierte Anwendung auf Basis von Kerndaten. Es gibt im Wesentlichen zwei Entitäten:
Es gibt einen einzelnen "Vergleich" Datensatz, der jedem Dokument zugeordnet ist. Zu jedem Dokument sind möglicherweise viele "Node" -Sätze vorhanden.
Meine erste Frage ist, ob ich richtig darüber nachdenke. Da es für jedes Dokument nur ein Vergleichsobjekt gibt, sind die Attribute des Vergleichs im Wesentlichen Attribute des Dokuments selbst. Was (wenn überhaupt) ist der bevorzugte Weg, dies zu modellieren?
Wenn eine Vergleichsentität tatsächlich der richtige Weg ist, lautet meine nächste Frage, wie und wann das (einzelne) Vergleichsobjekt tatsächlich instanziiert werden soll. Der Benutzer sollte den Vergleich nicht explizit "hinzufügen" müssen, da nur einer von ihnen dem Dokument zugeordnet ist. Stattdessen sollte ein einzelnes Vergleichsobjekt instanziiert und in den managedObjectContext eingefügt werden. Ich habe so etwas wie dieses Arbeits bekam bereits mit Code in MyDocument.m die wie folgt aussieht:
- (void) windowControllerDidLoadNib: (NSWindowController *) windowController { [super windowControllerDidLoadNib: windowController]; [NSEntityDescription insertNewObjectForEntityForName: @ "Vergleich" inManagedObjectContext: managedObjectContext]; }
jedoch - wenn der Benutzer ein neues Dokument erstellt, aber dann hat nie mit ihm arbeiten - zum Beispiel, wenn er klickt sofort die Schließen-Schaltfläche - dann sollte er nicht aufgefordert werden, die auf „Speicher“ Dokument. Er sollte gebeten werden, seine Arbeit nur zu speichern, wenn er tatsächlich irgendwelche Informationen eingegeben hat. Gibt es eine bevorzugte Möglichkeit, dieses Verhalten zu implementieren?