J'ai une application de base de données de données qui supporte annuler/rétablir via le NSUndoManager intégré associé à NSManagedObjectContext. J'ai quelques actions mises en place qui effectuent de nombreuses tâches dans les données de base, enveloppent toutes ces tâches dans un groupe undo via beginUndoGrouping
/endUndoGrouping
et sont traitées par le NSUndoManager.NSUndoManager avec Core Data - Redo ne fonctionne pas
Annuler fonctionne très bien. Je peux effectuer plusieurs actions successives, puis chacune d'entre elles les annule successivement et l'état de mon application est correctement maintenu. Cependant, l'élément de menu "Rétablir" n'est jamais activé. Cela signifie que NSUndoManager indique au menu qu'il n'y a aucun élément à rétablir.
Je me demande pourquoi NSUndoManager oublie apparemment des éléments une fois qu'ils sont annulés, et ne permet pas de faire des redos?
Une chose que je devrais mentionner est que je désactive l'enregistrement d'annulation après qu'un document soit ouvert/créé. Lorsque j'effectue une action, j'appelle enableUndoRegistration
, beginUndoGrouping
, exécute l'action, puis appelle le processPendingChanges
, setActionName:
, endUndoGrouping
, et enfin disableUndoRegistration
. Cela fait en sorte que seules les actions spécifiques peuvent être annulées, et toute autre modification de données que je fais en dehors de ceux-ci passent inaperçues au NSUndoManager. Cela peut être une partie du problème, mais si oui, je me demande pourquoi cela affecte redo?
Merci d'avance.