takeStoredValue(_:forKey:)
Sets the value of the property identified by a given key.
Declaration
func takeStoredValue(_ value: Any?, forKey key: String)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:
Searches for a private accessor method based on
key(a method preceded by an underbar). For example, with akeyof “lastName”, takeStoredValue(_:forKey:) looks for a method named_setLastName:.If a private accessor is not found, searches for an instance variable based on
keyand sets itsvaluedirectly. For example, with akeyof “lastName”, takeStoredValue(_:forKey:) looks for an instance variable named_lastNameorlastName.If neither a private accessor nor an instance variable is found, takeStoredValue(_:forKey:) searches for a public accessor method based on
key. For thekey“lastName”, this would besetLastName:.If
keyis 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 value(forKey:), you can prevent direct access of an instance variable with the class method accessInstanceVariablesDirectly.
See Also
Deprecated Methods
accessibilityAttributeNames()accessibilityAttributeValue(_:)accessibilityAttributeValue(_:forParameter:)accessibilityActionDescription(_:)accessibilityActionNames()accessibilityArrayAttributeCount(_:)accessibilityArrayAttributeValues(_:index:maxCount:)accessibilityIndex(ofChild:)accessibilityIsAttributeSettable(_:)accessibilityIsIgnored()accessibilityParameterizedAttributeNames()accessibilityPerformAction(_:)accessibilitySetOverrideValue(_:forAttribute:)accessibilitySetValue(_:forAttribute:)fileManager(_:shouldProceedAfterError:)