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.
- macOS 10.0+
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.