Я знаю, что это немного поздно, но для других, кто сталкивался с этим, я бы добавил немного больше к ответу Левенда.
Да, у вас должен быть отдельный класс менеджера для обработки операций (возможно, сам класс).
Я бы подумал, что если ваш модал должен обрабатывать валидации, перед вызовом делегата он будет валидировать объект.Если бы произошла ошибка, вы могли бы справиться с этим прямо сейчас.Если он прошел валидацию, вы можете передать действительный объект делегату.Таким образом, делегат может сделать предположение, что любой объект, который ему передается, является допустимым.
Что касается класса, который вы должны сохранить, я думаю, что это просто предпочтение.Но я бы посоветовал вам использовать метод save в самой модели данных ядра.
Недавно я наткнулся на mogenerator , который должен помочь в управлении классами CoreData.Я еще не устал, но звучит хорошо.