众所周知,在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时,谁能建议正确的方法来添加撤消/重做支持。
最佳答案
以下代码无效,因为您使用MR_context创建了新的上下文。该新上下文将在语句后释放。
[[NSManagedObjectContext MR_context] setUndoManager:undo];
您想要设置默认上下文的撤消管理器
[[NSManagedObjectContext MR_defaultContext] setUndoManager:undo];
关于ios - 将MagicalRecord与NSUndoManager结合使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12344526/