@preconcurrency @MainActor class @preconcurrency @MainActor class UITableViewDiffableDataSource<SectionIdentifierType, ItemIdentifierType> : NSObject where SectionIdentifierType : Hashable, SectionIdentifierType : Sendable, ItemIdentifierType : Hashable, ItemIdentifierType : Sendable
diffable 데이터 원본 개체는 테이블 보기 개체와 함께 작동하는 특수한 유형의 데이터 원본입니다.
간단하고 효율적인 방식으로 테이블 뷰의 데이터 및 UI 업데이트를 관리하는 데 필요한 동작을 제공합니다.
dataSource = UITableViewDiffableDataSource<Int, UUID>(tableView: tableView) {
(tableView: UITableView, indexPath: IndexPath, itemIdentifier: UUID) -> UITableViewCell? in
// configure and return cell
}
diffable data source로 구성한 후에는 table view에서 dataSource를 변경하지 마십시오. table view를 처음 구성한 후 새 데이터 원본이 필요한 경우 새 table view 및 diffable 데이터 원본을 만들고 구성합니다.
@preconcurrency struct NSDiffableDataSourceSnapshot<SectionIdentifierType, ItemIdentifierType> where SectionIdentifierType : Hashable, SectionIdentifierType : Sendable, ItemIdentifierType : Hashable, ItemIdentifierType : Sendable
Snapshot을 사용하여 table view에 표시되는 데이터의 초기 상태를 설정
하고 Snapshot을 사용하여 table view에 표시되는 데이터의 변경 사항을 반영
합니다.각 섹션과 항목에는 Hashable 프로토콜을 준수하는 고유 식별자가 있어야 합니다. Int, String 또는 UUID와 같은 내장 유형을 포함하여 식별자에 struct 또는 enum Swift 값 유형을 사용하십시오.
식별자에 Swift 클래스를 사용하는 경우 클래스는 NSObject의 하위 클래스여야 합니다.
// 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)
let snapshot = snapshotReference as NSDiffableDataSourceSnapshot<Int, UUID>