正如我们所知,在iOS上,NSManagedObjectContext没有默认的NSUndoManager实例。如果我们想要在核心数据中支持undo/redo,我们需要实例化我们自己的。
下面是我在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);结果始终是nothing,这意味着undoManager从未被实例化。有人能建议在使用MagicalRecord时添加撤消/重做支持的正确方法吗?
发布于 2013-06-07 16:58:23
下面的代码不起作用,因为您使用MR_context创建了一个新的上下文。这个新的上下文将在语句之后被释放。
[[NSManagedObjectContext MR_context] setUndoManager:undo];您想要设置默认上下文的撤消管理器
[[NSManagedObjectContext MR_defaultContext] setUndoManager:undo];https://stackoverflow.com/questions/12344526
复制相似问题