我们知道,在 iOS 上,NSManagedObjectContext 没有默认的 NSUndoManager 实例。如果我们想在 Core Data 中支持撤销/重做,我们需要实例化我们自己的。
这是我在 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;
}
但后来,当我观察时:
NSLog(@"%p", [NSManagedObjectContext MR_context].undoManager);
结果总是什么都没有,这意味着 undoManager 从未被实例化。任何人都可以建议在使用 MagicalRecord 时添加撤消/重做支持的正确方法。