Custom Managed Objects
At the moment, the Hero entity is represented by instances of the class NSManagedObject. Thanks to key-value coding, you have the ability to create entire data models without ever having to create a class specifically designed just to hold your application’s data.
This approach has some drawbacks, however. For one thing, when using key-value coding with managed objects, you use NSString constants to represent your attributes in code, but these constants are not checked in any way by the compiler. If you mistype the name of an attribute, the compiler won’t catch it. It can also be a little tedious having to use valueForKey: and setValue:forKey: all over the place instead of just using properties and dot notation. ...