To use CoreData many developers inherit model objects from NSManagedObject.
But what if I wanted to keep my model objects independent from the storage mechanism that is being used (maybe i will reuse them in a project where I dont need persistency at all)?
My solution so far has been to create for each model class a class inheriting from NSManagedObject that has a reference to the model object and loads and stores it.
Whats a better approach?
The best way to work with Core Data is to inherit your model objects from NSManagedObject. You can then control whether to persist or not from the Context, like TechZen pointed.
If you still insist on not inheriting your model classes from NSManagedObject, it can be of help to combine protocols and categories as described by RyanR. However, you will have in my opinion a big overhead creating protocols, categories and duplicating classes.