---
title: NSDiffableDataSourceSectionSnapshotReference
framework: uikit
role: symbol
role_heading: Class
path: uikit/nsdiffabledatasourcesectionsnapshotreference
---

# NSDiffableDataSourceSectionSnapshotReference

A representation of the state of the data in a layout section at a specific point in time.

## Declaration

```swift
class NSDiffableDataSourceSectionSnapshotReference
```

## Overview

Overview A section snapshot represents the data for a single section in a collection view. Through a section snapshot, you set up the initial state of the data that displays in an individual section of your view, and later update that data. You can use section snapshots with or instead of an NSDiffableDataSourceSnapshotReference, which represents the data in the entire view. Use a section snapshot when you need precise management of the data in a section of your layout, such as when the sections of your layout acquire their data from different sources. You can also use a section snapshot to represent data with a hierarchical structure, such as an outline with expandable items. The following example creates a section snapshot with one root item that contains three child items: for (NSNumber *section in sections) {     // Create a section snapshot.     NSDiffableDataSourceSectionSnapshot<NSString *> *sectionSnapshot = [[NSDiffableDataSourceSectionSnapshot alloc] init];          // Populate the section snapshot.     [sectionSnapshot appendItems: @[@"Food", @"Drinks"]];     [sectionSnapshot appendItems: @[@"🍏", @"🍓", @"🥐"] intoParentItem: @"Food"];          // Apply the section snapshot.     [dataSource applySnapshot: sectionSnapshot                     toSection: section          animatingDifferences: YES]; } important: If you’re working in a Swift codebase, always use NSDiffableDataSourceSectionSnapshot instead. Avoid using this type in Swift code. Only use this type to bridge from Objective-C code to Swift code by typecasting from a section snapshot reference to a section snapshot: let sectionSnapshot = sectionSnapshotRef as NSDiffableDataSourceSectionSnapshot<UUID>

## Topics

### Creating a section snapshot

- [init()](uikit/nsdiffabledatasourcesectionsnapshotreference/init().md)
- [ofParentItem(_:)](uikit/nsdiffabledatasourcesectionsnapshotreference/ofparentitem(_:).md)
- [ofParentItem(_:includingParentItem:)](uikit/nsdiffabledatasourcesectionsnapshotreference/ofparentitem(_:includingparentitem:).md)
- [appendItems(_:)](uikit/nsdiffabledatasourcesectionsnapshotreference/appenditems(_:).md)
- [appendItems(_:intoParentItem:)](uikit/nsdiffabledatasourcesectionsnapshotreference/appenditems(_:intoparentitem:).md)

### Accessing items

- [items](uikit/nsdiffabledatasourcesectionsnapshotreference/items.md)
- [rootItems](uikit/nsdiffabledatasourcesectionsnapshotreference/rootitems.md)
- [visibleItems](uikit/nsdiffabledatasourcesectionsnapshotreference/visibleitems.md)

### Getting item metrics

- [index(ofItem:)](uikit/nsdiffabledatasourcesectionsnapshotreference/index(ofitem:).md)
- [level(ofItem:)](uikit/nsdiffabledatasourcesectionsnapshotreference/level(ofitem:).md)
- [parent(ofChildItem:)](uikit/nsdiffabledatasourcesectionsnapshotreference/parent(ofchilditem:).md)
- [containsItem(_:)](uikit/nsdiffabledatasourcesectionsnapshotreference/containsitem(_:).md)
- [isVisible(_:)](uikit/nsdiffabledatasourcesectionsnapshotreference/isvisible(_:).md)

### Inserting items

- [insert(_:afterItem:)](uikit/nsdiffabledatasourcesectionsnapshotreference/insert(_:afteritem:).md)
- [insertItems(_:afterItem:)](uikit/nsdiffabledatasourcesectionsnapshotreference/insertitems(_:afteritem:).md)
- [insert(_:beforeItem:)](uikit/nsdiffabledatasourcesectionsnapshotreference/insert(_:beforeitem:).md)
- [insertItems(_:beforeItem:)](uikit/nsdiffabledatasourcesectionsnapshotreference/insertitems(_:beforeitem:).md)

### Removing items

- [deleteItems(_:)](uikit/nsdiffabledatasourcesectionsnapshotreference/deleteitems(_:).md)
- [deleteAllItems()](uikit/nsdiffabledatasourcesectionsnapshotreference/deleteallitems().md)

### Replacing items

- [replaceChildren(ofParentItem:with:)](uikit/nsdiffabledatasourcesectionsnapshotreference/replacechildren(ofparentitem:with:).md)

### Expanding and collapsing items

- [isExpanded(_:)](uikit/nsdiffabledatasourcesectionsnapshotreference/isexpanded(_:).md)
- [expandItems(_:)](uikit/nsdiffabledatasourcesectionsnapshotreference/expanditems(_:).md)
- [collapseItems(_:)](uikit/nsdiffabledatasourcesectionsnapshotreference/collapseitems(_:).md)

### Debugging section snapshots

- [visualDescription()](uikit/nsdiffabledatasourcesectionsnapshotreference/visualdescription().md)

### Instance Methods

- [expandedItems()](uikit/nsdiffabledatasourcesectionsnapshotreference/expandeditems().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)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
