【发布时间】:2011-05-31 18:59:33
【问题描述】:
我正在开发一个核心数据应用程序,该应用程序具有相当大的托管对象层次结构,类似于树。
创建基础对象时,它会创建一些子对象,这些子对象又会创建自己的子对象,依此类推。这些子对象中的每一个都可以使用 NSURLConnections 收集信息。
现在,我想通过 managedObjectContext 中的 undoManager 支持撤消/重做。问题是,如果用户创建了一个基础对象,然后尝试撤消该操作,则不会删除该基础对象。相反,可以移除一个或多个子对象。显然,这种类型的操作是不可预测且不需要的。
所以我尝试默认禁用撤消注册。我通过在 managedObjectContext 中进行任何修改之前调用 disableUndoRegistration: 来做到这一点。然后,在基础操作(例如创建基础对象)之前启用撤消注册,然后再次重新禁用注册。
现在当我尝试撤消时,我收到此错误:
撤消:NSUndoManager 0x1026428b0 在 无效状态,撤消被调用 嵌套的撤消组太多
想法?
【问题讨论】:
标签: cocoa core-data nsmanagedobject nsmanagedobjectcontext nsundomanager