When binding a NSArrayController, I see the following bindings available under controller content tab
- Content Array
- Content Array for Multiple Selection
- Content Object
- Content Set
However, I couldn’t find those options inside the Apple reference for NSArrayController, nor inside the actual NSArrayController.h itself. Where do they come from? And how do they differ from the arrangedObject property?
Screenshot Below

They’re documented in the Cocoa Bindings Reference, and they’re not publicly declared in any header file. Xcode’s knowledge of them is baked into Xcode, probably in some plug-in somewhere that comes with it.
arrangedObjects(plural) is an output. The array controller arranges its content objects, and the result of that is its arranged objects.The bindings are inputs:
contentArrayis the main one, since it is an array controller.contentSetis an alternative for binding to Core Data to-many relationships, which are sets. I’m not sure whether it works with ordered sets; when the set isn’t ordered, the order used byarrangeObjects:and manifest inarrangedObjectsis determined by the array controller’s sort descriptors.contentArrayForMultipleSelection, you don’t normally need. The case in which you do need it is described quite well in the Cocoa Bindings Reference.contentObjectis, as the CBR says, another array controller. Again, see the docs for its description of when you’d need it.Content comes from one (or more) of the content bindings, is arranged (according to any sort descriptors the array controller may have) by
arrangeObjects:, and is then available in the appointed order underarrangedObjects.