NSDiffableDataSourceSnapshot

Panther·2021년 8월 25일
0
post-custom-banner

https://developer.apple.com/documentation/uikit/nsdiffabledatasourcesnapshot

"A representation of the state of the data in a view at a specific point in time."

특정 시점에서 뷰에 있는 데이터 상태의 표현입니다.

Declaration

struct NSDiffableDataSourceSnapshot<SectionIdentifierType, ItemIdentifierType> where SectionIdentifierType : Hashable, ItemIdentifierType : Hashable

Overview

디퍼블 데이터 소스는 컬렉션 뷰 및 테이블 뷰에서 데이터를 제공하기 위해 스냅샷을 사용합니다. 스냅샷을 통해 뷰에서 표시하는 데이터의 초기 상태를 설정할 수 있으며, 이후 해당 데이터를 업데이트할 수도 있습니다.

스냅샷에 있는 데이터는 표시하고자 하는 섹션 및 아이템으로 만들어지며, 표시하길 원하는 순서로 나타납니다. 섹션 및 아이템을 추가, 삭제, 이동시켜서 표시하고자 하는 것을 설정할 수 있습니다.

Important
섹션 및 아이템의 각각은 Hashable 프로토콜을 따르는 고유한 아이덴티파이어를 가져야 합니다.

스냅샷을 사용해서 뷰에 데이터를 표시하려면 아래처럼 해야 합니다.

  1. 표시하고자 하는 데이터의 상태와 함께 스냅샷을 생성하고 채워야 합니다.
  2. UI에 변경사항을 반영하기 위해 스냅샷을 적용해야 합니다.

아래 방법 중 한 가지로 스냅샷을 생성 및 설정할 수 있습니다.

  • 비어있는 스냅샷을 생성한 후 스냅샷을 섹션 및 아이템에 추가합니다.
  • 디퍼블 데이터 소스의 snapshot() 메소드를 호출해서 현재 스냅샷을 가져온 후 표시하고자 하는 데이터의 새로운 상태를 반영하기 위해 해당 스냅샷을 수정해야 합니다.

예를 들어 아래 코드는 비어있는 스냅샷을 생성하고, 세 가지 아이템으로 하나의 섹션을 스냅샷으로 채우고 있습니다. 이후 스냅샷에서 나타나는 이전 상태와 새 상태 사이의 UI 업데이트를 애니메이션 처리하면서 스냅샷을 적용합니다.

// Create a snapshot.
var snapshot = NSDiffableDataSourceSnapshot<Int, UUID>()        

// Populate the snapshot.
snapshot.appendSections([0])
snapshot.appendItems([UUID(), UUID(), UUID()])

// Apply the snapshot.
dataSource.apply(snapshot, animatingDifferences: true)

더 많은 정보는 디퍼블 데이터 소스 타입을 보시기 바랍니다.

  • UICollectionViewDiffableDataSource
  • UITableViewDiffableDataSource
  • NSCollectionViewDiffableDataSource

UICollectionViewDiffableDataSource
https://developer.apple.com/documentation/uikit/uicollectionviewdiffabledatasource
https://velog.io/@panther222128/UICollectionViewDiffableDataSource

UITableViewDiffableDataSource
https://developer.apple.com/documentation/uikit/uitableviewdiffabledatasource
https://velog.io/@panther222128/UITableViewDiffableDataSource

NSCollectionViewDiffableDataSource
https://developer.apple.com/documentation/appkit/nscollectionviewdiffabledatasource
https://velog.io/@panther222128/NSCollectionViewDiffableDataSource

Bridging

NSDiffableDataSourceSnapshotReference 객체를 이 타입으로 연결시킬 수 있습니다.

let snapshot = snapshotReference as NSDiffableDataSourceSnapshot<Int, UUID>

Topics


Supporting Bridging

NSDiffableDataSourceSnapshotReference

특정 시점에 뷰에서 데이터의 상태를 표시하기 위해 사용하는 Objective-C 객체의 스위프트 표현입니다.

https://developer.apple.com/documentation/uikit/nsdiffabledatasourcesnapshotreference
https://velog.io/@panther222128/NSDiffableDataSourceSnapshotReference


See Also


Data

UICollectionViewDiffableDataSource

컬렉션 뷰에서 데이터를 관리하고 셀을 제공하기 위해 사용하는 객체입니다.

https://developer.apple.com/documentation/uikit/uicollectionviewdiffabledatasource
https://velog.io/@panther222128/UICollectionViewDiffableDataSource


post-custom-banner

0개의 댓글