---
title: NSArrayController
framework: appkit
role: symbol
role_heading: Class
path: appkit/nsarraycontroller
---

# NSArrayController

A bindings-compatible controller that manages a collection of objects.

## Declaration

```swift
class NSArrayController
```

## Overview

Overview Typically the collection that an NSArrayController manages is an array, however, if the controller manages a relationship of a managed object (see NSManagedObject) the collection may be a set. NSArrayController provides selection management and sorting capabilities.

## Topics

### Managing Sort Descriptors

- [sortDescriptors](appkit/nsarraycontroller/sortdescriptors.md)

### Arranging Objects

- [arrange(_:)](appkit/nsarraycontroller/arrange(_:).md)
- [arrangedObjects](appkit/nsarraycontroller/arrangedobjects.md)
- [rearrangeObjects()](appkit/nsarraycontroller/rearrangeobjects().md)

### Managing Content

- [add(_:)](appkit/nsarraycontroller/add(_:).md)

### Selection Attributes

- [avoidsEmptySelection](appkit/nsarraycontroller/avoidsemptyselection.md)
- [preservesSelection](appkit/nsarraycontroller/preservesselection.md)
- [alwaysUsesMultipleValuesMarker](appkit/nsarraycontroller/alwaysusesmultiplevaluesmarker.md)

### Managing selections

- [selectionIndex](appkit/nsarraycontroller/selectionindex.md)
- [setSelectionIndex(_:)](appkit/nsarraycontroller/setselectionindex(_:).md)
- [selectsInsertedObjects](appkit/nsarraycontroller/selectsinsertedobjects.md)
- [setSelectionIndexes(_:)](appkit/nsarraycontroller/setselectionindexes(_:).md)
- [selectionIndexes](appkit/nsarraycontroller/selectionindexes.md)
- [addSelectionIndexes(_:)](appkit/nsarraycontroller/addselectionindexes(_:).md)
- [removeSelectionIndexes(_:)](appkit/nsarraycontroller/removeselectionindexes(_:).md)
- [setSelectedObjects(_:)](appkit/nsarraycontroller/setselectedobjects(_:).md)
- [selectedObjects](appkit/nsarraycontroller/selectedobjects.md)
- [addSelectedObjects(_:)](appkit/nsarraycontroller/addselectedobjects(_:).md)
- [removeSelectedObjects(_:)](appkit/nsarraycontroller/removeselectedobjects(_:).md)
- [selectNext(_:)](appkit/nsarraycontroller/selectnext(_:).md)
- [canSelectNext](appkit/nsarraycontroller/canselectnext.md)
- [selectPrevious(_:)](appkit/nsarraycontroller/selectprevious(_:).md)
- [canSelectPrevious](appkit/nsarraycontroller/canselectprevious.md)

### Inserting

- [canInsert](appkit/nsarraycontroller/caninsert.md)
- [insert(_:)](appkit/nsarraycontroller/insert(_:).md)

### Adding and Removing Objects

- [addObject(_:)](appkit/nsarraycontroller/addobject(_:).md)
- [add(contentsOf:)](appkit/nsarraycontroller/add(contentsof:).md)
- [insert(_:atArrangedObjectIndex:)](appkit/nsarraycontroller/insert(_:atarrangedobjectindex:).md)
- [insert(contentsOf:atArrangedObjectIndexes:)](appkit/nsarraycontroller/insert(contentsof:atarrangedobjectindexes:).md)
- [remove(atArrangedObjectIndex:)](appkit/nsarraycontroller/remove(atarrangedobjectindex:).md)
- [remove(atArrangedObjectIndexes:)](appkit/nsarraycontroller/remove(atarrangedobjectindexes:).md)
- [remove(_:)](appkit/nsarraycontroller/remove(_:).md)
- [removeObject(_:)](appkit/nsarraycontroller/removeobject(_:).md)
- [remove(contentsOf:)](appkit/nsarraycontroller/remove(contentsof:).md)

### Filtering Content

- [clearsFilterPredicateOnInsertion](appkit/nsarraycontroller/clearsfilterpredicateoninsertion.md)
- [filterPredicate](appkit/nsarraycontroller/filterpredicate.md)

### Automatic Content Rearranging

- [automaticallyRearrangesObjects](appkit/nsarraycontroller/automaticallyrearrangesobjects.md)
- [automaticRearrangementKeyPaths](appkit/nsarraycontroller/automaticrearrangementkeypaths.md)
- [didChangeArrangementCriteria()](appkit/nsarraycontroller/didchangearrangementcriteria().md)

## Relationships

### Inherits From

- [NSObjectController](appkit/nsobjectcontroller.md)

### Inherited By

- [NSDictionaryController](appkit/nsdictionarycontroller.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSEditor](appkit/nseditor.md)
- [NSEditorRegistration](appkit/nseditorregistration.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
