An abstract class that provides the interface for querying the relationships and properties of a class.


@interface NSClassDescription : NSObject


Concrete subclasses of NSClassDescription provide the available attributes of objects of a particular class and the relationships between that class and other classes. Defining these relationships between classes allows for more intelligent and flexible manipulation of objects with key-value coding.

It is important to note that there are no class descriptions by default. To use NSClassDescription objects in your code you have to implement them for your model classes. For all concrete subclasses, you must provide implementations for all instance methods of NSClassDescription. (NSClassDescription provides only the implementation for the class methods that maintain the cache of registered class descriptions.) Once created, you must register a class description with the NSClassDescription method registerClassDescription:forClass:.

You can use the NSString objects in the arrays returned by methods such as attributeKeys and toManyRelationshipKeys to access—using key-value coding—the properties of an instance of the class to which a class description object corresponds. For more about attributes and relationships, see Cocoa Fundamentals Guide. For more about key-value coding, see Key-Value Coding Programming Guide.

NSScriptClassDescription, which is used to map the relationships between scriptable classes, is the only concrete subclass of NSClassDescription provided as part of the Cocoa framework.


Working with class descriptions

+ classDescriptionForClass:

Returns the class description for a given class.

+ invalidateClassDescriptionCache

Removes all NSClassDescription objects from the cache.

+ registerClassDescription:forClass:

Registers an NSClassDescription object for a given class in the NSClassDescription cache.

Attribute keys


Overridden by subclasses to return the names of attributes of instances of the described class.

Relationship keys

- inverseForRelationshipKey:

Overridden by subclasses to return the name of the inverse relationship from a relationship specified by a given key.


Overridden by subclasses to return the keys for the to-many relationship properties of instances of the described class.


Overridden by subclasses to return the keys for the to-one relationship properties of instances of the described class.



Posted by classDescriptionForClass: when a class description cannot be found for a class.


Inherits From

See Also

Script Dictionary Description


The top-level repository of scriptability information for an app at runtime.


A scriptable class that a macOS app supports.


A script command that a macOS app supports.