---
title: NSOrderedCollectionDifference
framework: foundation
role: symbol
role_heading: Class
path: foundation/nsorderedcollectiondifference
---

# NSOrderedCollectionDifference

An object representing the difference between two ordered collections.

## Declaration

```swift
class NSOrderedCollectionDifference
```

## Overview

Overview Use differenceFromArray: or one of its variations to get an instance of NSOrderedCollectionDifference, which represents the difference between two ordered collections. For example, the following sample compares two arrays of strings to create a difference that represents the changes: NSArray *original = @[@"Red", @"Green", @"Blue"]; NSArray *modified = @[@"Red", @"Blue", @"Green"];

NSOrderedCollectionDifference *diff = [original differenceFromArray:modified];

// diff.hasChanges == TRUE // diff.insertions.count == 1 // diff.removals.count == 1

## Topics

### Accessing Changes

- [hasChanges](foundation/nsorderedcollectiondifference/haschanges.md)
- [insertions](foundation/nsorderedcollectiondifference/insertions.md)
- [removals](foundation/nsorderedcollectiondifference/removals.md)
- [NSOrderedCollectionChange](foundation/nsorderedcollectionchange.md)
- [NSCollectionChangeType](foundation/nscollectionchangetype.md)

### Inverting a Difference Object

- [inverse()](foundation/nsorderedcollectiondifference/inverse().md)

### Creating a Collection Difference Object

- [init(changes:)](foundation/nsorderedcollectiondifference/init(changes:).md)
- [init(insert:insertedObjects:remove:removedObjects:)](foundation/nsorderedcollectiondifference/init(insert:insertedobjects:remove:removedobjects:).md)
- [init(insert:insertedObjects:remove:removedObjects:additionalChanges:)](foundation/nsorderedcollectiondifference/init(insert:insertedobjects:remove:removedobjects:additionalchanges:).md)

### Updating Changes from a Difference Object

- [transformingChanges(_:)](foundation/nsorderedcollectiondifference/transformingchanges(_:).md)

### Initializers

- [init(insertIndexes:insertedObjects:removeIndexes:removedObjects:)](foundation/nsorderedcollectiondifference/init(insertindexes:insertedobjects:removeindexes:removedobjects:).md)
- [init(insertIndexes:insertedObjects:removeIndexes:removedObjects:additionalChanges:)](foundation/nsorderedcollectiondifference/init(insertindexes:insertedobjects:removeindexes:removedobjects:additionalchanges:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSFastEnumeration](foundation/nsfastenumeration.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Comparing with Another Array

- [NSOrderedCollectionDifferenceCalculationOptions](foundation/nsorderedcollectiondifferencecalculationoptions.md)
