Удачи!
у добавить менеджер отмены в приложение для iPhone coredata. Когда пользователь пытается добавить новый объект (нажав на кнопку +), я загружаю новый модальный viewcontroller и запускаю новую группу отмены в viewDidLoad.
Когда пользователь нажимает кнопку «Отмена», я хочу откатить изменения в обратном вызове cancelAction.
Запросы:
Можно ли запустить вложенную группу отмены и сохранить ее в цикле событий и сопоставить все изменения, сделанные в одной группе отмен? Прямо сейчас, когда я вызываю beginUndoGrouping в cancelAction, я получаю пропущенное исключение beginUndoGrouping.Какое значение API groupsByEvent для NSUndoManager? Требуется ли установить значение NO, чтобы сохранить группу отмены в цикле событий?Что нужно сделать в обратном вызове saveAction, чтобы сделать изменения постоянными (кроме вызова save для mangedObjectContext)? Как сказать Undo Manager прекратить отслеживать изменения?Сообщение об ошибке:
* Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «_endUndoGroupRemovingIfEmpty :: NSUndoManager 0x75415f0 находится в недопустимом состоянии, вызывается endUndoGrouping без начала сопоставления
Образец кода:
// RootViewController.m
- (void) addAction {
// Load Modal View Controller to add new object
}
// AddViewController.m
- (void) viewDidLoad {
// Start nested undo group
[self.managedObjectContext processPendingChanges];
[self.managedObjectContext.undoManager beginUndoGrouping];
[self createModel];
}
- (void) cancelAction {
// Revert all changes
[self.managedObjectContext processPendingChanges];
[self.managedObjectContext.undoManager endUndoGrouping];
[self.managedObjectContext.undoManager undoNestedGroup];
...
}
- (void) saveAction {
// Save changes
}