NSWhoseSpecifier specifies every object in a collection (or every element in a container) that matches the condition defined by a single Boolean expression or multiple Boolean expressions connected by logical operators.
NSWhoseSpecifier is unique among object specifiers in that its top-level container is typically not the application object but an evaluated object specifier involved in the tested-for condition. An
NSWhoseSpecifier object encapsulates a “test” object for defining this condition. A test object is instantiated from a subclass of the abstract
NSScriptWhoseTest class, whose one declared method is
isTrue(). See "Boolean Expressions and Logical Operations" in
NSScriptObjectSpecifier and the descriptions in NSComparisonMethods and NSScriptingComparisonMethods for more information.
- macOS 10.10+
The set of elements specified by an
NSWhoseSpecifier object can be a subset of those that pass the
NSWhoseSpecifier object's test. This subset is specified by the various sub-element properties of the
NSWhoseSpecifier object . Consider as an example the specifier
paragraphs where color of third word is blue. This would be represented by an
NSWhoseSpecifier object that uses a test specifier and another object specifier to identify a subset of the objects with the specified property. That is, the specifier’s property is
paragraphs; the test specifier is an index specifier with property
index 3; and the qualifier is a key value qualifier for key
color and value
[NSColor blueColor]. The test object specifier (
word at index 3) is evaluated for each object (paragraph) using that object as the container; the resulting objects (if any) are tested with the qualifier (
NSWhoseSpecifier is part of Cocoa’s built-in script handling. You don’t normally subclass it.