I've always wondered when working with core data if there is any value to have model classes that aren't managed objects? If instead to give those objects persistence, your data manager class that handles the core data store knows how to write your instances of a class(or classes) into the core datastore, and when your app wants to recall those instances from persistence, the datastore has a method that creates instances of those objects without a managed object context?
The way I learned to work with core data, is to create model classes using the managed object model that xCode gives you and then whenever you create or destroy instances of those classes you treat them as managed objects instead of the normal kinds of object instances that most other classes create. This always struck me as somewhat convoluted and difficult because whenever you need to change your managed objects you need to do it through the managed object context, which at the end of the day is just a database.
Sorry if the question is confusing, if you need clarification I'm more than happy to, I find discussing Core Data somewhat difficult.