Основные данные и группы отмен - PullRequest
2 голосов
/ 10 июля 2011

Я работаю с 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 * начать *

На данный момент моя новая категория исчезла, и я не понимаю, почему. Это было завернуто в группу, которая была закончена и сохранена. Разве это не должно быть защищено от отката в этот момент? Я ожидал, что отмена повлияет только на любые изменения, внесенные в подробный вид элемента. И если то, как он ведет себя сейчас, правильно, то как мне заставить его вести себя так, как я ожидал?

Любые разъяснения приветствуются!

1 Ответ

2 голосов
/ 24 июля 2011

Ответ оказался таким: вам нужно использовать второй контекст управляемого объекта для внутренней группы.

...