It seems that an NSEntityDescription object describes data and an NSManagedObject object contains the corresponding data. If you have a normal NSObject subclass, the description of the data and the actual data are in the same place, aren't they. Well at least the description is in the class and the data is in the object. You can think of an object as having a description of the kind of variables it contains.
Why then does Core Data separate the class which describes the data and the class which contains the data? Is it to do with faulting?