NSCollectionViewDiffableDataSource

Panther·2021년 8월 26일
0

https://developer.apple.com/documentation/appkit/nscollectionviewdiffabledatasource

"The object you use to manage data and provide items for a collection view."

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

Declaration

class NSCollectionViewDiffableDataSource<SectionIdentifierType, ItemIdentifierType> : NSObject where SectionIdentifierType : Hashable, ItemIdentifierType : Hashable

Overview

디퍼블 데이터 소스 객체는 컬렉션 뷰 객체와 함께 동작하는 데이터 소스의 특수한 타입입니다. 이 객체는 컬렉션 뷰의 데이터와 UI에 대한 업데이트를 관리하는 데 필요한 동작을 간단하고 효율적인 방법으로 제공합니다. 이 객체는 NSCollectionViewDataSource 프로토콜을 따르고 있으며 프로토콜 메소드 모두에 대한 구현을 제공합니다.

컬렉션 뷰를 데이터로 채우려면 아래처럼 해야 합니다.

  1. 디퍼블 데이터 소스를 컬렉션 뷰에 연결합니다.
  2. 컬렉션 뷰의 아이템을 설정하기 위해 아이템 제공자를 구현합니다.
  3. 데이터의 현재 상태를 생성합니다.
  4. UI에 데이터를 표시합니다.

컬렉션 뷰에 디퍼블 데이터 소스를 연결하려면, 해당 데이터 소스와 연결시키고자 하는 컬렉션 뷰를 전달하면서 디퍼블 데이터 소스 객체의 init(collectionView:itemProvider:) 이니셜라이저를 생성해야 합니다. UI에 데이터를 어떻게 표시할 것인지 결정하는 각각의 아이템을 설정하는 곳으로 아이템 제공자 역시 전달해야 합니다.

dataSource = NSCollectionViewDiffableDataSource<Int, UUID>(collectionView: collectionView) {
    (collectionView: NSCollectionView, indexPath: IndexPath, itemIdentifier: UUID) -> NSCollectionViewItem? in
    // configure and return item
}

이후 데이터의 현재 상태를 생성하고, 스냅샷의 구성 및 적용을 통해 UI에 데이터를 표시합니다. 더 많은 정보는 NSDiffableDataSourceSnapshot을 보시기 바랍니다.

NSDiffableDataSourceSnapshot
https://developer.apple.com/documentation/uikit/nsdiffabledatasourcesnapshot
https://velog.io/@panther222128/NSDiffableDataSourceSnapshot

Topics


Supporting Protocol Requirements

Protocol Implementations

프로토콜 메소드의 디퍼블 데이터 소스 구현에 접근합니다.

https://developer.apple.com/documentation/uikit/uitableviewdiffabledatasource/protocol_implementations
https://velog.io/@panther222128/Protocol-Implementations


Supporting Bridging

NSCollectionViewDiffableDataSourceReference

컬렉션 뷰에서 데이터 관리 및 아이템 제공을 위해 사용하는 Objective-C 객체의 스위프트 표현입니다.

https://developer.apple.com/documentation/appkit/nscollectionviewdiffabledatasourcereference
https://velog.io/@panther222128/NSCollectionViewDiffableDataSourceReference


0개의 댓글