Deaktivieren Sie die Funktion zum Erstellen / Löschen von NSManagedObject

8

In meinem Kerndatenmodell habe ich eine Beziehung mit dem Namen listItems , die mit mehreren listItem -Entitäten verknüpft ist, jede mit einem stringValue -Attribut. Ich habe ein Steuerelement erstellt, das im Wesentlichen eine Liste von NSTextFields ist, eins für jedes Listenelement. Das Steuerelement ist ordnungsgemäß an listItems gebunden, und ich habe es so eingerichtet, dass beim Drücken der Eingabetaste ein neues Feld direkt unter dem aktuell bearbeiteten erstellt wird und der Fokus auf das neue Feld geändert wird. Um also ein neues Element hinzuzufügen, drückt der Benutzer Return.

Ebenso wird, wenn der Benutzer die Bearbeitung beendet und das aktuell bearbeitete Feld leer ist, das Feld entfernt (so wie es ist, erscheinen leere Felder sozusagen nur im "Bearbeitungsmodus"). Das funktioniert ziemlich gut. Grundsätzlich mache ich in meiner listItem NSManagedObject-Unterklasse Folgendes:

%Vor%

Das Problem ist, dass jedes Mal, wenn eine Zeile auf diese Weise gelöscht wird, sie sich beim UndoManager registriert. Wenn Sie also eine Zeile bearbeiten, drücken Sie die Eingabetaste (wodurch eine neue Zeile erstellt wird) und klicken Sie auf Weiter, um die Bearbeitung zu beenden. Die Zeile wird ausgeblendet. Wenn ich dann rückgängig mache, erscheint das leere Feld wieder. Mein Ziel ist es, Löschoperationen mit leeren Feldern vom UndoManager zu ignorieren.

Wie würde ich darüber gehen? Ich habe versucht, [[[self managedObjectContext] undoManager] disableUndoRegistration] und die zugehörige enableUndoRegistration an mehreren Stellen zu verwenden (wie -didTurnIntoFault , aber ich vermute, dass die Undo-Registrierung vor dieser Methode passieren könnte)

    
Matt Ball 23.04.2009, 04:00
quelle

1 Antwort

18

Wenn Sie tiefer in die Core Data-Dokumentation eintauchen, finden Sie diesen versteckten Leckerbissen:

%Vor%

Änderungen werden bis zum Ende der Ereignisschleife normalerweise nicht mit dem Undo-Manager registriert und wurden daher registriert, nachdem Sie die Registrierung rückgängig gemacht hatten. Das obige erzwingt, dass es auftritt, wenn Sie möchten.

    
Mike Abdullah 23.04.2009, 07:41
quelle

Tags und Links