【问题标题】:Undo managed object deletion撤消托管对象删除
【发布时间】:2015-09-13 12:48:04
【问题描述】:

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

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

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

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

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

这工作得很好,对象复活,NSFetchedResultsController 将其拾取并添加回表格视图。

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

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

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

【问题讨论】:

  • 是的,一定要坚持。本质上,您应该执行与删除它时相同的操作。

标签: ios objective-c core-data magicalrecord


【解决方案1】:

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

【讨论】: