У меня есть приложение на основе основных данных, которое поддерживает отмену/повторение через встроенный NSUndoManager, связанный с NSManagedObjectContext. У меня есть несколько действий, которые выполняют многочисленные задачи в Core Data, завершают все эти задачи в группу отмены через beginUndoGrouping
/endUndoGrouping
и обрабатываются NSUndoManager.NSUndoManager с базовыми данными - не работает
Undo хорошо работает. Я могу выполнить несколько последовательных действий, и каждый из них последовательно отменяет каждый из них, и состояние моего приложения поддерживается правильно. Однако пункт меню «Повторить» никогда не включается. Это означает, что NSUndoManager сообщает меню, что нет элементов для повтора.
Мне интересно, почему NSUndoManager, по-видимому, забывает о предметах, когда они отменяются, и не позволяет повторить?
Одна вещь, которую я должен упомянуть, это то, что я отключу отмену регистрации после открытия или создания документа. Когда я совершу действие, я звоню enableUndoRegistration
, beginUndoGrouping
, выполните действие, затем позвоните processPendingChanges
, setActionName:
, endUndoGrouping
и, наконец, disableUndoRegistration
. Это гарантирует, что только конкретные действия будут отменены, а любые другие изменения данных, которые я делаю вне их, остаются незамеченными NSUndoManager. Это может быть частью проблемы, но если это так, мне интересно, почему это влияет на повтор?
Заранее спасибо.