如何使用CoreData禁用某些动作/实体的NSUndoManager?

时间:2014-01-07 14:52:21

标签: ios objective-c macos core-data nsundomanager

我在CoreData上使用OSX(但我认为iOS的问题是相同的。)

我想禁用用于创建/删除NSManagedObjects的撤消管理。但是,如果可能的话,我会继续对我的实体的属性(如NSStrings等)进行撤消管理。

我该怎么做?

如果可能,我想要一个全局解决方案,例如MyManagedObject的子类NSManagedObject,并覆盖方法(awakeFromInsertprepareForDeletion)。

2 个答案:

答案 0 :(得分:4)

NSUndoManagerdisableUndoRegistrationenableUndoRegistration方法允许此操作。您需要拦截您不希望撤消的操作,并根据需要禁用/启用撤消管理器。请注意,启用和禁用的调用必须平衡(不要在不调用(或已调用)另一个的情况下调用一个。还有责任确保撤消任何操作都不会导致无效状态(这是beginUndoGrouping)的目的。

答案 1 :(得分:1)

您可以将关联号NSUndoManager确定为NSManagedObjectContext

    [self.managedObjectContext setUndoManager:nil] ;