我正在开发一种绘图应用,用户在画布上设置点。正在绘制的内容存储为NSManagedObjects。我还启用了撤消管理器,以便用户可以通过按下按钮撤消最后的绘图手势。
这一切都按预期工作。
然后我有一个按钮来删除画布上的所有内容(透明画布)。按下时我在后台线程上进行删除操作,因为它可能需要一段时间,我想呈现一个进度条。然后我将后台线程的模型对象上下文与主线程的上下文合并。这也很好。
但我希望用户只需轻按一下撤销按钮即可撤消完整的删除操作。这是我无法做到的。
对于多线程部分,我正在学习本教程:http://www.cimgf.com/2011/05/04/core-data-and-threads-without-the-headache/
似乎我无法在两个线程的合并之外进行撤消(虽然它工作了一次,但我不知道为什么)。不知道我是否应该将整个事物嵌套在撤消组中。我试过但仍然没有运气。
答案 0 :(得分:1)
我相信你可以使用嵌套的撤销组来完成它。 包装您的操作并在
之间合并-(void)beginUndoGrouping;
-(void)endUndoGrouping;
...并使用-(void)undoNestedGroup
撤消。