6
votes

Annuler l'objet géré de données de base

J'ai ce code: xxx

Le magasin est géré dans le contexte et sera enregistré lorsque le contexte est enregistré, mais j'ai un bouton où l'utilisateur peut annuler le formulaire où l'utilisateur peut annuler le formulaire. les données sont collectées. Comment puis-je annuler ou supprimer cela du contexte? Ou est-ce que je pense mal?


0 commentaires

5 Réponses :


6
votes
[store.managedObjectContext rollback];

0 commentaires

0
votes

Aussi, vous pouvez également enregistrer toutes les données de l'utilisateur dans un tableau et lorsque l'utilisateur est prêt, il vous suffit d'enregistrer la matrice sur les données de base.


0 commentaires

12
votes

Les données de base ont Prise en charge intégrée pour Annuler , afin que vous puissiez annuler des modifications individuelles en envoyant le message -undo code> au contexte:

[store.managedObjectContext rollback]


5 commentaires

Quelle est la différence entre annuler et retourner? Qu'est-ce qui est le plus fréquemment utilisé?


@Dude L'ancien renverse un seul changement, ce dernier renverse tous les changements jusqu'à la sauvegarde précédente. Avez-vous examiné la documentation que j'ai liée? Ça va aider. En outre, lisez également sur les méthodes d'annulation dans Page de référence NsmanageDObjectContext . Je viens de réaliser que votre question est tagged iOS , alors faites attention à la note dans les documents qui indiquent que vous devez avoir besoin de Configurez le gestionnaire d'annulation du contexte pour activer le support des annulations.


Mais si vous utilisez un annulation, est-il possible qu'il y ait eu d'autres endroits dans le code qui enregistre quelque chose dans le contexte, alors quand vous dites UNDO Vous pourriez annuler le mauvais changement?


N'y a-t-il pas de moyen facile de simplement étonner une entité du contexte lorsque vous en avez la référence?


@Dude Vous pouvez certainement supprimer l'objet. Un objet géré n'a aucun sens dans un contexte d'objet géré, cependant, vous ne pouvez donc pas "détacher" et avoir toujours un objet utilisable.



8
votes

Comme mentionné précédemment, vous pouvez utiliser un gestionnaire d'annulation. Ou, vous pouvez simplement utiliser un gestionnaire distinctObjectContext et faire toutes vos modifications. Si vous décidez de les garder, enregistrez le contexte. Sinon, il suffit de le jeter. Un MOC est juste un coussinet à gratter pour le travail et n'a aucun impact sur la base de données sous-jacente jusqu'à ce que vous ayez sauvegardé.

Vous ne pouvez pas vraiment "détacher une entité", mais vous pouvez faire revenir un objet géré dans une faute, perdant tout changements qui n'ont pas été enregistrés. P>

[managedObjectContext refreshObject:object mergeChanges:NO];


0 commentaires

3
votes

annuler ne fonctionne que lorsque je crée un Undomenager (Swift 5): xxx

Après cette configuration, vous pouvez annuler un dernier changement : xxx


0 commentaires