Instance Method

validateValue(_:forKey:)

Throws an error when the value specified by a given pointer is not valid or can't be made valid for the property identified by a given key.

Declaration

func validateValue(_ ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKey inKey: String) throws

Parameters

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.

Return Value

A Boolean set to true if the value pointed at by ioValue is valid for the property identified by inKey, or if the method is able to modify the value at ioValue to make it valid; otherwise false.

Discussion

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 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.

See Also

Validation

func validateValue(AutoreleasingUnsafeMutablePointer<AnyObject?>, forKeyPath: String)

Throws an error when the value specified by a given pointer is not valid for a given key path relative to the receiver.