如何使用 CoreData 为某些操作/实体禁用 NSUndoManager?

Col*_*las 1 macos core-data objective-c nsundomanager ios

和我一起工作CoreDataOSX(但我想这个问题是相同的iOS)。

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

我怎样才能做到这一点?

如果可能的话,我想一个全球性解决方案,如子MyManagedObjectNSManagedObject与被覆盖的方法(awakeFromInsertprepareForDeletion)。

Wai*_*ain 5

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