2013-03-27 2 views
0

У меня есть экран меню, который заполняется данными из объекта NSManagedObject. Пока этот экран доступен, пользователь может вводить всевозможные значения. и т. д.Скопируйте NSManagedObject в новый объект в памяти

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

Однако у меня возникают проблемы с реализацией любого метода копирования или процесса внутри моего NSManagedObject, потому что все свойства @dynamic.

Если я просто «вернул себя» в методе copyWithZone внутри объекта NSManagedObject, правильно ли он скопировал бы все?

ответ

1

Почему бы не использовать категорию, чтобы добавить метод копирования в свой собственный NSManagedObject?

Если ваш NSManagedObject был пользователем, затем создайте новую категорию User + copy.h/m, где вы добавите метод копирования, который будет просто копировать все отдельные поля по одному.

1

Вы хотите внести изменения в один и тот же объект NSManagedObject, но в дочерний NSManagedObjectContext. Таким образом, если вам нужно отказаться от изменений, вы можете просто отбросить дочерний контекст, не затрагивая ваш основной контекст или объект. См. this question.

+0

im довольно новый для coredata. как только я создаю дочерний контекст ... как его использовать для доступа к объекту, который я хочу? – JMD

+0

Взгляните на ['- [NSManagedObjectContext objectWithID:]'] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObjectContext_Class/NSManagedObjectContext.html#//apple_ref/ doc/uid/TP30001182-BAJIFIGA) - он позволяет получить объект с известным идентификатором в данном контексте. Возможно, вы можете вывести идентификатор из объекта, который хотите отредактировать, и попросить объект с этим идентификатором в вашем новом дочернем контексте. – Tim

Смежные вопросы