Я работаю с Core Data впервые, и это меня озадачило.
У меня есть следующие методы для группировки и сохранения моих изменений:
- (void)beginUndoGrouping:(NSManagedObjectContext *)managedObjectContext {
NSLog(@"begin");
[managedObjectContext processPendingChanges];
[managedObjectContext.undoManager beginUndoGrouping];
}
- (void)endUndoGroupingAndSaveContext:(NSManagedObjectContext *)managedObjectContext
{
NSLog(@"end/save");
[managedObjectContext processPendingChanges];
[managedObjectContext.undoManager endUndoGrouping];
[self saveContext:managedObjectContext];
}
- (void)cancelUndoGrouping:(NSManagedObjectContext *)managedObjectContext {
NSLog(@"cancel");
[managedObjectContext processPendingChanges];
[managedObjectContext.undoManager endUndoGrouping];
[managedObjectContext.undoManager undoNestedGroup];
}
При поддержке операторов NSLog я знаю, что это последовательность событий:
- запустить приложение в режиме просмотра root
- введите вид списка
1012 * начинают *
- Выйти из списка
конец / сохранить
- введите подробный вид элемента
- введите подробный вид категории
начать
- нажмите кнопку Добавить категорию, чтобы перейти к другому виду.
1026 * начать *
- введите новые данные
- нажмите кнопку «Готово»
конец / сохранить
- коснитесь Назад, чтобы вернуться к подробному виду элемента
- нажмите кнопку Отмена
отмена
- вернуться к просмотру списка
1042 * начать *
На данный момент моя новая категория исчезла, и я не понимаю, почему. Это было завернуто в группу, которая была закончена и сохранена. Разве это не должно быть защищено от отката в этот момент? Я ожидал, что отмена повлияет только на любые изменения, внесенные в подробный вид элемента. И если то, как он ведет себя сейчас, правильно, то как мне заставить его вести себя так, как я ожидал?
Любые разъяснения приветствуются!