Восстановить одну извлеченную сущность из многих - Основные данные - PullRequest
0 голосов
/ 23 апреля 2011

Этот вопрос связан с моим непониманием того, как использовать диспетчер отмены основных данных и как восстановить NSManagedObject до его состояния до того, как редактирование было завершено.

Я только учусь осваивать базовые данные. У меня есть классы NSManagedObject, созданные с их динамическими средствами доступа. Я выполняю выборку, которая возвращает несколько результатов сущности NSManagedObject. Содержимое каждого из этих результатов объекта (имя, фамилия) помещается в табличное представление, а затем пользователь выбирает одно из таблицы для подробного просмотра и последующего редактирования.

Контроллер подробного представления получает указатель на выбранную сущность NSManagedObject. Когда пользователь редактирует поля, соответствующее значение свойства в сущности NSManagedObject обновляется. Это казалось самым чистым способом управлять этими изменениями.

Теперь, вместо того, чтобы фиксировать изменения с помощью сохранения, я хочу предоставить функцию отмены редактирования, которая выполняет откат к тому, что находится в базе данных для этого объекта. Я действительно хочу восстановить только одну сущность, а не выполнять полное повторное поиск.

Я попытался выполнить откат, и я попытался NSUndoManager (с beginUndoGrouping и endUndoGrouping), и это не работает. Я не думаю, что понимаю, что на самом деле должен делать откат.

Но в любом случае, я все еще хочу восстановить значения свойств только в этой единственной сущности (используя ленивый подход, чтобы получить только то, что нужно, то есть единственную сущность), чтобы мой контроллер подробного представления мог пополнить свой вид с помощью правильная информация. Прямо сейчас он использует значения сущности NSManagedObject, которые содержат отредактированные значения, которые были отменены.

Полагаю, я мог бы просто начать процесс редактирования, создав копию NSManagedObject. Если нажать кнопку отмены редактирования, я могу скопировать ее обратно в оригинал. (Возможно, я даже смогу просто заменить оригинал на копию, переместив указатель. Но поскольку указатель фактически был пропущен через несколько объектов, я не уверен, как управлять сохранением номера в копии.)

У кого-нибудь есть другие предложения?

Спасибо

1 Ответ

0 голосов
/ 23 апреля 2011

Использование rollback должно выполнить то, что вы хотите, и я не уверен, что это не так.Вероятно, это ошибка детализации реализации.

Вы можете найти конкретные управляемые объекты, которые были обновлены, но еще не сохранены, вызвав контекст updatedObjects.

...