【Collection Operators】
Collection operators are specialized key paths that are passed as the parameter to the valueForKeyPath:
method. The operator is specified by a string preceded by an at sign (@
). The key path on the left side of the collection operator, if present, determines the array or set, relative to the receiver, that is used in the operation. The key path on the right side of the operator specifies the property of the collection that the operator uses. Figure 1 illustrates the operator key path format.
All the collection operators, with the exception of @count
, require a key path to the right of the collection operator.
Note: It is not currently possible to define your own collection operators.
Simple Collection Operators
1 NSNumber *transactionAverage = [transactions valueForKeyPath:@"@avg.amount"]; 2 NSNumber *numberOfTransactions = [transactions valueForKeyPath:@"@count"]; 3 NSDate *latestDate = [transactions valueForKeyPath:@"@max.date"]; 4 NSDate *earliestDate = [transactions valueForKeyPath:@"@min.date"]; 5 NSNumber *amountSum = [transactions valueForKeyPath:@"@sum.amount"];
Object Operators
1 NSArray *payees = [transactions valueForKeyPath:@"@distinctUnionOfObjects.payee"]; 2 NSArray *payees = [transactions valueForKeyPath:@"@unionOfObjects.payee"]; 3 // Important: These operators raise an exception if any of the leaf objects is nil.
Array and Set Operatorsw
1 NSArray *payees = [arrayOfTransactionsArrays valueForKeyPath:@"@distinctUnionOfArrays.payee"]; 2 NSArray *payees = [arrayOfTransactionsArrays valueForKeyPath:@"@unionOfArrays.payee"]; 3 @distinctUnionOfSets 4 Important: These operators raise an exception if any of the leaf objects is nil.