Этот вопрос связан с моим непониманием того, как использовать диспетчер отмены основных данных и как восстановить NSManagedObject до его состояния до того, как редактирование было завершено.
Я только учусь осваивать базовые данные. У меня есть классы NSManagedObject, созданные с их динамическими средствами доступа. Я выполняю выборку, которая возвращает несколько результатов сущности NSManagedObject. Содержимое каждого из этих результатов объекта (имя, фамилия) помещается в табличное представление, а затем пользователь выбирает одно из таблицы для подробного просмотра и последующего редактирования.
Контроллер подробного представления получает указатель на выбранную сущность NSManagedObject. Когда пользователь редактирует поля, соответствующее значение свойства в сущности NSManagedObject обновляется. Это казалось самым чистым способом управлять этими изменениями.
Теперь, вместо того, чтобы фиксировать изменения с помощью сохранения, я хочу предоставить функцию отмены редактирования, которая выполняет откат к тому, что находится в базе данных для этого объекта. Я действительно хочу восстановить только одну сущность, а не выполнять полное повторное поиск.
Я попытался выполнить откат, и я попытался NSUndoManager (с beginUndoGrouping и endUndoGrouping), и это не работает. Я не думаю, что понимаю, что на самом деле должен делать откат.
Но в любом случае, я все еще хочу восстановить значения свойств только в этой единственной сущности (используя ленивый подход, чтобы получить только то, что нужно, то есть единственную сущность), чтобы мой контроллер подробного представления мог пополнить свой вид с помощью правильная информация. Прямо сейчас он использует значения сущности NSManagedObject, которые содержат отредактированные значения, которые были отменены.
Полагаю, я мог бы просто начать процесс редактирования, создав копию NSManagedObject. Если нажать кнопку отмены редактирования, я могу скопировать ее обратно в оригинал. (Возможно, я даже смогу просто заменить оригинал на копию, переместив указатель. Но поскольку указатель фактически был пропущен через несколько объектов, я не уверен, как управлять сохранением номера в копии.)
У кого-нибудь есть другие предложения?
Спасибо