A managed object is a model object (in the model-view-controller sense) that represents a record from a persistent store. A managed object is an instance of
NSManagedObject or a subclass of
NSManagedObject. A managed object is registered with a managed object context. In any given context, there is at most one instance of a managed object that corresponds to a given record in a persistent store.
A managed object has a reference to an entity description object that tells it what entity it represents. In this way,
NSManagedObject can represent any entity—you don’t need a unique subclass per entity. You use a subclass if you want to implement custom behavior, for example to calculate a derived property value, or to implement validation logic.