核心数据和NSUndoManager - 带撤消的删除/插入顺序

时间:2012-02-24 23:10:41

标签: ios core-data nsundomanager

我有一个由多个图层(托管对象)组成的图像,每个图层都由一个视图表示。当我清除这些图层时,我会从前到后删除它们,期望撤消以相反的顺序将它们恢复到前面,从而从后到前创建它们的视图,给我正确的顺序。但是,恢复图层(管理对象)的顺序似乎是随机的。有没有办法确保以相同的顺序重新插入图层(因为撤消通常是一个堆栈,这是我所期望的)。

请注意,所有图层删除都发生在一个撤消分组中,因此它不像我多次点击撤消按钮,它都在一次撤消调用中。

[self.managedObjectContext.undoManager beginUndoGrouping];
//remove all layers but the bg
NSMutableOrderedSet * layers = self.interactionView.currentSketchPage.layersSet;
for (int i = layers.count-1; i >= 1; i--) {
    [self.managedObjectContext deleteObject:[layers objectAtIndex:i]];
}
[self.managedObjectContext.undoManager endUndoGrouping];

请注意,删除其中一些图层会导致其他对象从级联中删除,所以也许这也会影响它?

编辑:想要注意切换for循环的顺序不会改变图层恢复的顺序。

0 个答案:

没有答案