gpt4 book ai didi

cocoa - NSUndoManager、核心数据和选择性撤消/重做

转载 作者:行者123 更新时间:2023-12-03 16:07:28 26 4
gpt4 key购买 nike

我正在开发一个核心数据应用程序,该应用程序具有相当大的托管对象层次结构,类似于树。

当创建一个基础对象时,它会创建一些子对象,这些子对象又创建自己的子对象,依此类推。这些子对象中的每一个都可以使用 NSURLConnections 收集信息。

现在,我想使用 ManagedObjectContext 中的 undoManager 支持撤消/重做。问题是,如果用户创建一个基础对象,然后尝试撤消该操作,则该基础对象不会被删除。相反,可以移除一个或多个子对象。显然,这种类型的操作是不可预测且不受欢迎的。

所以我尝试默认禁用撤消注册。我通过在 ManagedObjectContext 中进行任何修改之前调用 disableUndoRegistration: 来完成此操作。然后,在创建基础对象等基本操作之前启用撤消注册,然后再次重新禁用注册。

现在,当我尝试撤消时,出现此错误:

undo: NSUndoManager 0x1026428b0 is in invalid state, undo was called with too many nested undo groups

想法?

最佳答案

NSUndoManager 等待下一个运行循环周期,直到注册您的更改

// do your stuff

// give the run loop a breath

[[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate:[NSDate date]];
[undoManager disableUndoRegistration];

关于cocoa - NSUndoManager、核心数据和选择性撤消/重做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com