A specifier that indicates every object in a collection matching a condition.
- macOS 10.0+
NSWhose 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.
NSWhose 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
NSWhose object encapsulates a “test” object for defining this condition. A test object is instantiated from a subclass of the abstract
NSScript class, whose one declared method is
is. See "Boolean Expressions and Logical Operations" in
NSScript and the descriptions in NSComparisonMethods and NSScriptingComparisonMethods for more information.
The set of elements specified by an
NSWhose object can be a subset of those that pass the
NSWhose object's test. This subset is specified by the various sub-element properties of the
NSWhose object . Consider as an example the specifier
paragraphs where color of third word is blue. This would be represented by an
NSWhose 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 blue. 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 (
NSWhose is part of Cocoa’s built-in script handling. You don’t normally subclass it.