撤消管理对象删除

Undo managed object deletion

我在 MagicalRecord 提供的默认 MOC 上设置了 NSUndoManager

[NSManagedObjectContext MR_defaultContext].undoManager = [[NSUndoManager alloc] init];

当用户在我的 table 视图中滑动删除时,我只需删除对象并将更改保存到根上下文:

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
  NSManagedObject *model = [modelFromMainThread MR_inContext:localContext];
  [model MR_deleteEntityInContext:localContext];
}];

当用户摇动设备以撤消删除时,我只需调用 [defaultContext undo]

这工作得很好,对象复活并且 NSFetchedResultsController 拾取它并将它添加回 table 视图。

但是当我编辑复活的对象时出现问题。一旦我保存它,它就会再次消失。

这里有什么我想念的让它正常工作吗?

我是否必须将撤消操作保留回根上下文?

我应该在撤消持久性更改时将对象保存回持久性存储,否则该对象将在下一次合并时消失。