【问题标题】:disableUndoRegistration is still allowing undo operationsdisableUndoRegistration 仍然允许撤消操作
【发布时间】:2011-06-18 22:38:55
【问题描述】:

我想为 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];
    }
}

【问题讨论】:

  • 我添加了对 [undoManager isUndoRegistrationEnabled] 的调用;返回 NO。但是我仍然可以撤消。怎么办?
  • 我刚刚想到一个解决方案,即在对象与所有其他更改一起保存之前不设置对象数据。我认为这可以作为临时修复,但我想知道为什么撤消无法正常工作。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多