Objective-C Collection Operators
Calculate average - a shorter way
When you have a collection of Transactions
objects and want to
calculate its average amount, instead of looping through the collection
like this:
double sum = 0;
for (Transaction *transaction in transactions) {
sum += [transaction.amount doubleValue];
}
NSNumber *avg = [NSNumber numberWithDouble:(sum / [transactions count])];
you can reduce the loop to 1 line of code, using Objective-C key-value coding:
NSNumber *avg = [transactions valueForKeyPath:@"@avg.amount"];
Currently, there is a fixed set of collection operators:
- Simple collection operators (
@avg
,@count
,@sum
,@max
,@min
) - Object operators (
@distinctUnionOfObjects
,@unionOfObjects
) - Array and set operators (
@distinctUnionOfArrays
,@unionOfArrays
)