核心数据撤消后台线程删除

时间:2012-07-08 09:41:31

标签: objective-c core-data

我正在开发一种绘图应用,用户在画布上设置点。正在绘制的内容存储为NSManagedObjects。我还启用了撤消管理器,以便用户可以通过按下按钮撤消最后的绘图手势。

这一切都按预期工作。

然后我有一个按钮来删除画布上的所有内容(透明画布)。按下时我在后台线程上进行删除操作,因为它可能需要一段时间,我想呈现一个进度条。然后我将后台线程的模型对象上下文与主线程的上下文合并。这也很好。

但我希望用户只需轻按一下撤销按钮即可撤消完整的删除操作。这是我无法做到的。

对于多线程部分,我正在学习本教程:http://www.cimgf.com/2011/05/04/core-data-and-threads-without-the-headache/

似乎我无法在两个线程的合并之外进行撤消(虽然它工作了一次,但我不知道为什么)。不知道我是否应该将整个事物嵌套在撤消组中。我试过但仍然没有运气。

1 个答案:

答案 0 :(得分:1)

我相信你可以使用嵌套的撤销组来完成它。 包装您的操作并在

之间合并
-(void)beginUndoGrouping;
-(void)endUndoGrouping;

...并使用-(void)undoNestedGroup撤消。