EOSortOrdering
- Inherits from:
- (com.apple.client.eocontrol) Object
(com.apple.yellow.eocontrol) NSObject
- Implements:
- (com.apple.client.eocontrol only) NSCoding
- Package:
- com.apple.client.eocontrol
- com.apple.yellow.eocontrol
Class Description
An EOSortOrdering object specifies the way that a group of objects should be sorted, using a property key and a method selector for comparing values of that property. EOSortOrderings are used both to generate SQL when fetching rows from a database server, and to sort objects in memory. EOFetchSpecification objects use an array of EOSortOrderings, which are applied in series to perform sorts by more than one property.
Sorting with SQL
When an EOSortOrdering is used to fetch data from a relational database, it's rendered into an ORDER BY clause for a SQL SELECT statement according to the concrete adaptor you're using. For more information, see the class description for EOSQLExpression. The Framework predefines symbols for four comparison selectors, listed in the table below. The table also shows an example of how the comparison selectors can be mapped to SQL.
Defined Name | SQL Expression |
CompareAscending | ( key) asc |
CompareDescending | ( key) desc |
CompareCaseInsensitiveAscending | upper( key) asc |
CompareCaseInsensitiveDescending | upper( key) desc |
Using the mapping in the table above, the array of EOSortOrderings
(nameOrdering
) created in the following
code example:
EOSortOrdering lastNameOrdering = EOSortOrdering.sortOrderingWithKey("lastName", EOSortOrdering.CompareAscending); EOSortOrdering firstNameOrdering = (EOSortOrdering.sortOrderingWithKey("firstName", EOSortOrdering.CompareAscending); NSMutableArray nameOrdering = new NSMutableArray(); nameOrdering.addObject(lastNameOrdering); nameOrdering.addObject(firstNameOrdering);
results in this ORDER BY clause:
order by (lastName) asc, (firstName) asc
In-Memory Sorting
The methods sortedArrayUsingKeyOrderArray and sortArrayUsingKeyOrderArray are
used to sort objects in memory. Given an array of objects and an
array of EOSortOrderings, sortedArrayUsingKeyOrderArray
returns
a new array of objects sorted according to the specified EOSortOrderings.
Similarly, sortArrayUsingKeyOrderArray
sorts
the provided array of objects in place. This code fragment, for example,
sorts an array of Employee objects in place, by last name, then
first name using the array of EOSortOrderings created above:
SortOrdering.sortVectorUsingKeyOrderVector(employees, nameOrdering);
Constants
EOSortOrdering defines the following NSSelector constants:
Defined Name | Method |
CompareAscending | compareAscending |
CompareDescending | compareDescending |
CompareCaseInsensitiveAscending | compareCaseInsensitiveAscending |
CompareCaseInsensitiveDescending | compareCaseInsensitiveDescending |
The first two can be used with any value class; the second two with String objects only. The sorting methods extract property values using key-value coding and apply the selectors to the values. If you use custom value classes, you should be sure to implement the appropriate comparison methods to avoid exceptions when sorting objects.
Interfaces Implemented
NSCoding (com.apple.client.eocontrol only)
encodeWithCoder
Method Types
- Constructors
- EOSortOrdering
- Examining a sort ordering
- key
- selector
- In-memory sorting
- sortedArrayUsingKeyOrderArray
- sortArrayUsingKeyOrderArray
Constructors
EOSortOrdering
public
EOSortOrdering
(
String key,
NSSelector selector)
See Also: EOSortOrdering
Static Methods
sortArrayUsingKeyOrderArray
public static void
sortArrayUsingKeyOrderArray
(
NSMutableArray objects,
NSArray sortOrderings)
compare...
messages.
See the table in "Sorting with SQL" for a list of the compare methods.See Also: sortedArrayUsingKeyOrderArray
sortOrderingWithKey
public static EOSortOrdering
sortOrderingWithKey
(
String key,
NSSelector selector)
See Also: EOSortOrdering constructor
sortedArrayUsingKeyOrderArray
public static NSArray
sortedArrayUsingKeyOrderArray
(
NSArray objects,
NSArray sortOrderings)
compare...
messages.
See the table in "Sorting with SQL" for a list of the compare methods.Instance Methods
key
public String
key
()
See Also: selector
selector
public NSSelector
selector
()
See Also: key