disableUndoRegistration仍然允许撤消操作

时间:2011-01-31 23:29:06

标签: ios objective-c iphone cocoa-touch undo

我想为NSManagedObject上的操作禁用撤销注册,但即使我显式调用disableUndoRegistration,它仍会记录操作。

我有什么明显的遗失吗?

我还尝试分别在viewWillAppear和viewWillDisappear方法中启用/禁用。

以下是一些示例代码......

#pragma mark -
#pragma mark NotesViewControllerDelegate methods
 - (void)notesViewController:(NotesViewController *)controller didFinishWithSave:(BOOL)save
{
    if (save)
    {
        [undoManager disableUndoRegistration];
        [book setNotes:[controller getDataFromText]];
        [undoManager enableUndoRegistration];
    }
}

1 个答案:

答案 0 :(得分:3)

你必须调用[managedObjectContext processPendingChanges];在禁用和启用撤销注册的每个调用之前,因为Core Data队列更改以便能够进行优化。

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdUsingMOs.html