У меня есть приложение UIKit на основе Core Data, которое позволяет пользователю перетаскивать объекты на экране. Пока объект перетаскивается, я обновляю его атрибут положения при каждом событии touchesMoved:
. Чтобы поддержать отмену операции перетаскивания за один раз, я создаю новую группу отмены в начале перетаскивания и закрываю группу, когда пользователь поднимает палец.
Чтобы сэкономить память и сделать операции отмены быстрыми, я хочу объединить данные отмены, относящиеся к операции перетаскивания, но Core Data делает это сложным. Проблема в том, что processPendingChanges
вызывается в конце каждого цикла цикла выполнения и заставляет Core Data сохранять новую запись отмены для изменения позиции, которое произошло в этой итерации. Операция перетаскивания может легко накопить сотни таких записей отмены, все из которых, кроме первой, не нужны.
Есть ли способ продолжать использовать волшебную встроенную поддержку отмены в Core Data, но не тратить драгоценную память на такие повторяющиеся записи отмены? Мне нравится, что мне не нужно заботиться о поддержании согласованности графа объектов при операциях отмены/возврата, но неспособность правильно обрабатывать эти непрерывные обновления атрибутов, похоже, мешает.