0

我正在尝试设置一个撤消组,该组跨越在平移手势识别器期间发生的所有更改。被修改的对象是来自 Core Data 的 NSManagedObjects。

当手势进入“开始”阶段时,代码启动撤消组并关闭按事件分组。在“结束”和“取消”阶段,组结束并重新打开按事件分组。

在识别器的每次“更改”时,都会更新相同的核心数据对象。随后,Core Data 为该特定更改创建一个新的撤消组。

有什么办法可以获得核心数据来阻止它?或者我是否需要更改在这种情况下处理撤消的方式?

这里有一个示例项目,其中包含 BBQMainViewController.m 的 handlePanGesture: 方法(第 82 行)中的相关代码。该项目在每次更新识别器时将撤消堆栈打印到控制台。如您所见,撤消堆栈构建和构建。如果您注释掉第 168 行,撤消堆栈不会建立。

4

2 回答 2

0

由于您NSManagedObject每次通过手势识别器循环都在修改相同的内容(好吧,else无论如何在最后一个子句中),为什么不缓存该值并将对象的值设置一次UIGestureRecognizerStateEnded呢?

不管您的设置如何,Core Data 可能会为每次更改(至少对图中的同一对象)显式创建一个新的撤消组级别(我不足以成为一名 Core Data 专家肯定知道) 。setGroupsByEvent:

于 2012-01-18T19:11:06.180 回答
0

事实证明,我看到的问题实际上是由我正在开发的应用程序在撤消后未正确更新 UI 引起的。

在手势开始时创建一个撤消组,然后在结束或取消状态时将其关闭,这会包装核心数据在识别器更改状态更新期间创建的所有撤消组。在撤消管理器上调用撤消撤消整个组,包括由 Core Data 创建的嵌套组。

简而言之:用户错误。照常。

于 2012-01-20T04:09:46.007 回答