Отменить Группу с Базовыми Данными через спины цикла выполнения - PullRequest
0 голосов
/ 18 января 2012

Я пытаюсь настроить группу отмены, которая охватывает все изменения, которые происходят во время распознавания жестов панорамирования.Изменяемые объекты - это NSManagedObjects из Core Data.

Когда жест входит в «начальную» фазу, код запускает группу отмены и отключает группировку по событию.На этапах «конец» и «отмена» группа заканчивается и снова включается группировка по событию.

При каждом «изменении» распознавателя обновляется один и тот же объект основных данных.Впоследствии Core Data создает новую группу отмены для этого конкретного изменения.

Можно ли как-нибудь получить данные ядра, чтобы это остановить?Или мне нужно изменить способ обработки отмены в этом случае?

У меня есть пример проекта здесь , который имеет соответствующий код в методе handlePanGesture: метода BBQMainViewController.m (строка 82).Проект выводит на консоль стек отмены при каждом обновлении распознавателя.Как видите, стек отмены строит и строит.Если вы закомментируете строку 168, стек отмены не создается.

Ответы [ 2 ]

0 голосов
/ 20 января 2012

Оказывается, проблема, которую я видел, была вызвана тем, что приложение, над которым я работаю, неправильно обновляет пользовательский интерфейс после отмены.

Создание группы отмены при запуске жеста, а затем закрытие ее в конечных или отмененных состояниях оборачивает все основные данные групп отмены, создаваемые во время обновлений состояния изменения рекогайзера. Вызов отмены в диспетчере отмены отменяет всю группу, включая вложенные группы, созданные Core Data.

Короче говоря: ошибка пользователя. Как обычно.

0 голосов
/ 18 января 2012

Поскольку вы изменяете один и тот же NSManagedObject каждый раз в цикле распознавания жестов (ну, во всяком случае, в последнем предложении else), почему бы не кэшировать значение и не установить значение объекта только один раз на UIGestureRecognizerStateEnded?

Может быть (а мне не пока достаточно эксперта по основным данным, чтобы знать наверняка), что основные данные явно создают новый уровень группы отмен для каждого изменения (по крайней мере, для того же объекта в график) независимо от ваших setGroupsByEvent: настроек.

...