CocoaDev

Edit AllPages

You can bind a computed value from a NSArrayController using a few built in operators in the Model Key Path. For instance, if you have an NSArrayController of objects, each of which has a “pages” property. You can display the total number of pages setting: Controller Key: arrangedObjects Model Key Path: @sum.pages

there are a few others too: @avg to average the values @max to get the max value

and just putting @count will give you the total number of arranged items.


Here they are… look in KVC documentation for more info

*@avg *@count
*@distinctUnionOfArrays
*@distinctUnionOfObjects
*@max
*@min
*@sum
*@unionOfArrays
*@unionOfObjects

And here is a link to the documenation: http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/ArrayOperators.html


Please correct me if the following isn’t true:

Note that it seems like it is not possible to combine multiple array operators in the same expression like this: Controller Key: arrangedObjects Model Key Path: @unionOfArrays.bills.@sum.cost

In that case you have to either make a seperate ArrayController bounds to arrangedObjects (of the first ArrayController), @unionOfArrays.bills. And then use @sum.cost in the binding of for example a NSTextField (none-editable).

Or you can combine the expressions in code like this:

[[projectsController valueForKeyPath:@”selection.@unionOfArrays.bills”] valueForKeyPath:@”@sum.cost”]