2012-09-10 6 views
0

Comme nous le savons, sur iOS, NSManagedObjectContext n'est pas fourni avec une instance NSUndoManager par défaut. Dans le cas où nous voulons prendre en charge annuler/rétablir dans les données de base, nous devons instancier le nôtre.Utilisation de MagicalRecord avec NSUndoManager

Voici ce que je l'ai écrit dans mon appDelegate:

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
// Override point for customization after application launch. 
[MagicalRecord setupAutoMigratingCoreDataStack]; 
NSUndoManager *undo = [[NSUndoManager alloc] init]; 
[[NSManagedObjectContext MR_context] setUndoManager:undo]; 

return YES; 
} 

mais plus tard, quand je observateur:

NSLog(@"%p", [NSManagedObjectContext MR_context].undoManager); 

le résultat est toujours rien, ce qui signifie que le undoManager n'a jamais été instancié. Quelqu'un peut-il conseiller la bonne façon d'ajouter Annuler/Refaire le soutien tout en travaillant avec MagicalRecord.

Répondre

3

Le code suivant ne fonctionne pas, car vous créez un nouveau contexte avec MR_context. Ce nouveau contexte sera désaffecté après la déclaration.

[[NSManagedObjectContext MR_context] setUndoManager:undo]; 

Vous souhaitez définir le gestionnaire d'annulation du contexte par défaut

[[NSManagedObjectContext MR_defaultContext] setUndoManager:undo]; 
+0

merci Stephan! –

Questions connexes