---
title: PHFetchResultChangeDetails
framework: photos
role: symbol
role_heading: Class
path: photos/phfetchresultchangedetails
---

# PHFetchResultChangeDetails

A description of changes that occurred in the set of asset or collection objects listed in a fetch result.

## Declaration

```swift
class PHFetchResultChangeDetails<ObjectType> where ObjectType : PHObject
```

## Overview

Overview A PHFetchResultChangeDetails object provides detailed information about the differences between two fetch results—one that you previously obtained and an updated one that would result if you performed the same fetch again. The change details object provides information useful for updating a UI that lists the contents of a fetch result, such as the indexes of added, removed, and rearranged objects. Processing Changes in Order PhotoKit describes changedIndexes in the after state, while UICollectionVieww’s performBatchUpdates(_:completion:) expects them in the before state. As a result, changedIndexes can’t be used safely inside performBatchUpdates(_:completion:). Instead, use changedIndexes after and outside the performBatchUpdates(_:completion:) call, reapplying the code used to configure cells in cellForItem(at:) rather than telling UICollectionView to reload.

## Topics

### Getting the Changed Fetch Result

- [fetchResultBeforeChanges](photos/phfetchresultchangedetails/fetchresultbeforechanges.md)
- [fetchResultAfterChanges](photos/phfetchresultchangedetails/fetchresultafterchanges.md)

### Getting Change Information

- [hasIncrementalChanges](photos/phfetchresultchangedetails/hasincrementalchanges.md)
- [removedIndexes](photos/phfetchresultchangedetails/removedindexes.md)
- [removedObjects](photos/phfetchresultchangedetails/removedobjects.md)
- [insertedIndexes](photos/phfetchresultchangedetails/insertedindexes.md)
- [insertedObjects](photos/phfetchresultchangedetails/insertedobjects.md)
- [changedIndexes](photos/phfetchresultchangedetails/changedindexes.md)
- [changedObjects](photos/phfetchresultchangedetails/changedobjects.md)
- [hasMoves](photos/phfetchresultchangedetails/hasmoves.md)
- [enumerateMoves(_:)](photos/phfetchresultchangedetails/enumeratemoves(_:).md)

### Comparing Fetch Results

- [init(from:to:changedObjects:)](photos/phfetchresultchangedetails/init(from:to:changedobjects:).md)

### Initializers

- [init(fromFetchResult:toFetchResult:changedObjects:)](photos/phfetchresultchangedetails/init(fromfetchresult:tofetchresult:changedobjects:).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)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Observing Library Changes

- [Observing Changes in the Photo Library](photokit/observing-changes-in-the-photo-library.md)
- [register(_:)](photos/phphotolibrary/register(_:)-6y3b9.md)
- [unregisterChangeObserver(_:)](photos/phphotolibrary/unregisterchangeobserver(_:).md)
- [PHPhotoLibraryChangeObserver](photos/phphotolibrarychangeobserver.md)
- [PHChange](photos/phchange.md)
- [PHObjectChangeDetails](photos/phobjectchangedetails.md)
