< Previous PageNext Page > Hide TOC

Deprecated NSKeyValueCoding Methods

A method identified as deprecated has been superseded and may become unsupported in the future.

Deprecated in Mac OS X v10.3

handleQueryWithUnboundKey:

Invoked by valueForKey: when it finds no property corresponding to key. (Deprecated in Mac OS X v10.3. Use valueForUndefinedKey: instead.)

- (id)handleQueryWithUnboundKey:(NSString *)key

Availability
Declared In
NSKeyValueCoding.h

handleTakeValue:forUnboundKey:

Invoked by takeValue:forKey: when it finds no property binding for key. (Deprecated in Mac OS X v10.3. Use setValue:forUndefinedKey: instead.)

- (void)handleTakeValue:(id)value forUnboundKey:(NSString *)key

Availability
Declared In
NSKeyValueCoding.h

takeValue:forKey:

Sets the value for the property identified by key to value. (Deprecated in Mac OS X v10.3. Use setValue:forKey: instead.)

- (void)takeValue:(id)value forKey:(NSString *)key

Availability
Declared In
NSKeyValueCoding.h

takeValue:forKeyPath:

Sets the value for the property identified by keyPath to value. (Deprecated in Mac OS X v10.3. Use setValue:forKeyPath: instead.)

- (void)takeValue:(id)value forKeyPath:(NSString *)keyPath

Availability
Declared In
NSKeyValueCoding.h

takeValuesFromDictionary:

Sets properties of the receiver with values from a given dictionary, using its keys to identify the properties (Deprecated in Mac OS X v10.3. Use setValuesForKeysWithDictionary: instead.)

- (void)takeValuesFromDictionary:(NSDictionary *)aDictionary

Availability
Declared In
NSKeyValueCoding.h

unableToSetNilForKey:

Invoked if key is represented by a scalar attribute. (Deprecated in Mac OS X v10.3. Use setNilValueForKey: instead.)

- (void)unableToSetNilForKey:(NSString *)key

Availability
Declared In
NSKeyValueCoding.h

valuesForKeys:

Returns a dictionary containing as keys the property names in keys, with corresponding values being the corresponding property values. (Deprecated in Mac OS X v10.3. Use dictionaryWithValuesForKeys: instead.)

- (NSDictionary *)valuesForKeys:(NSArray *)keys

Availability
Related Sample Code
Declared In
NSKeyValueCoding.h

Deprecated in Mac OS X v10.4

useStoredAccessor

Returns YES if the stored value methods storedValueForKey: and takeStoredValue:forKey: should use private accessor methods in preference to public accessors. (Deprecated in Mac OS X v10.4. This method has no direct replacement, although see accessInstanceVariablesDirectly.)

+ (BOOL)useStoredAccessor

Discussion

Returning NO causes the stored value methods to use the same accessor method or instance variable search order as the corresponding basic key-value coding methods (valueForKey: and takeValue:forKey:). The default implementation returns YES.

Applications should use the valueForKey: and setValue:forKey: methods instead of storedValueForKey: and takeStoredValue:forKey:.

Availability
Declared In
NSKeyValueCoding.h

storedValueForKey:

Returns the property identified by a given key. (Deprecated in Mac OS X v10.4. If you are using the NSManagedObject class, use primitiveValueForKey: instead.)

- (id)storedValueForKey:(NSString *)key

Discussion

This method is used when the value is retrieved for storage in an object store (generally, this storage is ultimately in a database) or for inclusion in a snapshot. The default implementation is similar to the implementation of valueForKey:, but it resolves key with a different method/instance variable search order:

  1. Searches for a private accessor method based on key (a method preceded by an underbar). For example, with a key of “lastName”, storedValueForKey: looks for a method named _getLastName or _lastName.

  2. If a private accessor is not found, searches for an instance variable based on key and returns its value directly. For example, with a key of “lastName”, storedValueForKey: looks for an instance variable named _lastName or lastName.

  3. If neither a private accessor nor an instance variable is found, storedValueForKey: searches for a public accessor method based on key. For the key “lastName”, this would be getLastName or lastName.

  4. If key is unknown, storedValueForKey: calls handleTakeValue:forUnboundKey:.

This different search order allows an object to bypass processing that is performed before returning a value through a public API. However, if you always want to use the search order in valueForKey:, you can implement the class method useStoredAccessor to return NO. And as with valueForKey:, you can prevent direct access of an instance variable with the class method accessInstanceVariablesDirectly.

Availability
Declared In
NSKeyValueCoding.h

takeStoredValue:forKey:

Sets the value of the property identified by a given key. (Deprecated in Mac OS X v10.4. If you are using the NSManagedObject class, use setPrimitiveValue:forKey: instead.)

- (void)takeStoredValue:(id)value forKey:(NSString *)key

Discussion

This method is used to initialize the receiver with values from an object store (generally, this storage is ultimately from a database) or to restore a value from a snapshot. The default implementation is similar to the implementation of takeValue:forKey:, but it resolves key with a different method/instance variable search order:

  1. Searches for a private accessor method based on key (a method preceded by an underbar). For example, with a key of “lastName”, takeStoredValue:forKey: looks for a method named _setLastName:.

  2. If a private accessor is not found, searches for an instance variable based on key and sets its value directly. For example, with a key of “lastName”, takeStoredValue:forKey: looks for an instance variable named _lastName or lastName.

  3. If neither a private accessor nor an instance variable is found, takeStoredValue:forKey: searches for a public accessor method based on key. For the key “lastName”, this would be setLastName:.

  4. If key is unknown, takeStoredValue:forKey: calls handleTakeValue:forUnboundKey:.

This different search order allows an object to bypass processing that is performed before setting a value through a public API. However, if you always want to use the search order in takeValue:forKey:, you can implement the class method useStoredAccessor to return NO. And as with valueForKey:, you can prevent direct access of an instance variable with the class method accessInstanceVariablesDirectly.

Availability
Related Sample Code
Declared In
NSKeyValueCoding.h

< Previous PageNext Page > Hide TOC


© 2009 Apple Inc. All Rights Reserved. (Last updated: 2009-02-04)


Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.