Решение 1 влечет за собой полное копирование объектов. Однако копировать объект сложно. Свойства могут быть обработаны легко, но отношения являются тонкими. Чтобы скопировать отношения (глубокая, а не мелкая), вам нужна рекурсивная процедура, в которой вы всегда заботитесь о том, чтобы не копировать один и тот же объект снова и снова, если когда-либо встретитесь снова на этапе рекурсии.
Решение 2 может быть легче реализовать в зависимости от логики вашего приложения и, как вы отметили, GUI.
Существует третья возможность правильно обрабатывать временные объекты следующим образом. Добавьте логическое свойство к объекту, связанному с вашими объектами, которое отслеживает статус объекта (временный или нет). Затем, используя методы NSManagedObjectContext
- (NSSet *)insertedObjects
вы просто перечисляете набор объектов и, в зависимости от значения логического флага, сохраняете или удаляете объект.
Обратите внимание, что это может быть довольно дорого в зависимости от количества объектов.