Désactiver le NSUndoManager pour certaine actions / certains objets
colas_
Membre
Bonjour,
j'utilise CoreData. Je souhaiterais que le NSUndoManager n'annule pas la création/suppression de NSManagedObjects.
Savez-vous comment faire ?
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Merci !
J'ai essayé ceci
mais ça ne marche pas.
Pour la suppression, je ne saurai pas comment faire car -prepareForDeletion est appelée avant la suppression.
Je crois que je vais tout bonnement désactiver le UndoManager !
J'ai eu ce problème : je voulais que certaines modifications de mes données soient undoable et d'autres non.
Ma solution : chainer un deuxième NSObjectManager au premier en déclarant nil son UndoManager. Ensuite lors de la création d'un NSManagedObject il suffit de s'adresser au bon NSObjectManager.
Par contre il faut penser à sauvegarder le deuxième NSObjectManager lorsque le premier est sauvegardé. Pour cela je mets en place une notification qui me permet de le faire automatiquement.
Extrait de mon NSDocument.m
Merci @Fleurantin de ta réponse.
Qu'entends-tu par NSObjectManager ? Je n'ai pas vraiment compris ta stratégie.
Pour être précis je parle de Manager pour le NSManagedObjectContext, celui du NSPersistentStore et celui ou ceux que je lui ajoute.
Ma stratégie est la suivante :
SI je crée un NSManagedObject pour lequel je veux pouvoir annuler des actions le concernant je le crée dans le NSManagedObjectContext ayant un NSUndoManager. (Par exemple des éléments graphiques de mon dessin.)
SI je crée un NSManagedObject pour lequel je ne veux pas annuler des actions le concernant je le crée dans le NSManagedObjectContext n'ayant pas de NSUndoManager. (Par exemple les valeurs de position, taille de fenêtre, couleur en cours, calque en cours etc).
Dans mon exemple contexteLibre est un NSManagedObject propriété de mon NSDocument et créé comme les autres au premier appel.
Super !
Je m'en suis sorti en faisant :
Je précise que j'hérite de NSPersistentDocument et donc que le MOC est fourni automatiquement !