250x250
반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

스윞한 개발자

DiffableDatasource의 이해 본문

Swift 이론

DiffableDatasource의 이해

스윞남 2025. 2. 16. 23:14
728x90
반응형
SMALL

안녕하세요! 이번 시간에는 DiffableDatasource에 대해 공부해 보고 정리해 보겠습니다!

 

 

# DiffableDatasource란?

DiffableDatasource는 iOS 13부터 도입된 데이터를 관리하는 최신 방식입니다. UICollectionView, UITableView에서 사용될 수 있습니다. 일반적으로 사용하던 DataSource를 사용하는 방식보다 더 간단하고 효율적인 기능을 제공합니다.

 

https://developer.apple.com/documentation/uikit/uicollectionviewdiffabledatasource-9tqpa

 

UICollectionViewDiffableDataSource | Apple Developer Documentation

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

developer.apple.com

 

# 왜 DiffableDatasource가 나오게 되었는가?

1. 스냅샷 기반의 데이터 업데이트(reloadData X)

기존에는 tableView, collectionView의 데이터가 업데이트되면 reloadData()하는 방식으로 전체 데이터를 다시 로드하지만, DiffableDatasource는 변경사항만 적용하여 애니메이션 주며 업데이트됩니다.

 

2. 애니메이션 적용의 어려움

기존의 방식에서 데이터를 리로드할 경우, 뚝뚝 끊기며 데이터가 업데이트되는 것을 확인할 수 있습니다. 애니메이션을 사용할 수는 있지만, 그에 따른 메서드를 수동으로 호출해야 합니다. 

 

3. 변경사항의 충돌

기존 방법은 만약 변경사항을 정확하게 알지 못하는 경우, 섹션 수가 잘못되어 앱이 종료되는 경우가 존재합니다. 이러한 에러는 데이터의 변경사항을 수동으로 동기화해줘야 합니다. 즉, reloadData를 잘해주어야 합니다.

 

 

 

반면에, DiffableDatasource에서는 apply를 통해 위의 작업들에 대해 처리가 가능합니다. 

 

* Snapshot

1. 데이터의 현재 상태를 저장하는 역할

2. 변경 사항을 자동으로 감지하여 최소한의 업데이트 수행

3. Hashable을 사용하여 데이터의 고유성을 보장하며, 고유한 식별값을 사용하여 변경사항을 추적

 

https://developer.apple.com/documentation/scenekit/scnview/snapshot()

 

snapshot() | Apple Developer Documentation

Renders the view’s scene into a new image object.

developer.apple.com

 

결국, 간단히 말해서 현재 UI State의 Truth입니다. 섹션과 아이템에는 고유한 식별자가 존재하며, indexPath가 아니고 이 고유한 식별자를 통해 업데이트하게 됩니다.

 

다음 포스팅에서는 CompositionalCollectionView + DiffableDatasource의 실습으로 돌아오겠습니다.

 

감사합니다.

 

 

728x90
반응형
LIST