CoreData and ViewControllers do not need to know about each other.
UIViewControllers are not traditional controllers in the MVC world. They are more closely related to views - and I prefer to create them with this in mind (most Apple code examples contain a lot of ModelController code - perhaps for the sake of simplicity).
I like to create ModelControllers and leave my ViewController to control my views, and I provide my ViewControllers with an instance of my ModelController.
My ModelController will manage my model, load, edit, delete, etc. I still expose Model classes for my ViewControllers, but Views NEVER leave ViewController. You will never see the view in ModelController.
The advantage of this is that if you later create an iPad application - your model and how it behaves is completely independent of your ViewControllers, so when you create several new UIViewControllers for your iPad application, you can connect your ModelControllers .
Your ModelController may have a parent class with your dual CRUD methods.
On the other hand....
A library called MagicalRecord https://github.com/magicalpanda/MagicalRecord adds an Active Record template to NSManagedObjects.
source share