validateValue(_:forKey:)
Indicates whether the value specified by a given pointer is valid, or can be made valid, for the property identified by a given key.
Declaration
func validateValue(_ ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKey inKey: String) throwsParameters
- ioValue:
A pointer to a new value for the property identified by
inKey. This method may modify or replace the value in order to make it valid. - inKey:
The name of one of the receiver’s properties. The key must specify an attribute or a to-one relationship.
Discussion
In Swift, this method throws an error if the value isn’t valid. In Objective-C, it returns a Boolean value.
The default implementation of this function searches the class of the receiver for a property-specific validation function with a particular signature, allowing that function to determine the outcome of the validation. For it to be found, the property-specific validation function must be exposed to Objective-C, must be named according to the pattern validate<InKey>, must take a single, optional AnyObject pointer argument, and must throw. For example, for a property named someString, the validation function is:
@objc func validateSomeString(_ ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>) throws {
// Test, and possibly replace the value here; or throw an error
}If you define such a function, the default implementation of validateValue(_:forKey:) calls it when asked to validate the corresponding property, allowing your function to either alter the input value or throw an error.
If no such function exists for a particular property, validateValue(_:forKey:)returns YES without taking any other action. In other words, by default, the general validation call succeeds if you don’t explicitly provide a validation function for the given property.
See Adding Validation in Key-Value Coding Programming Guide for more information.