1019 새싹 73회차 정리 - DiffableDataSource
iOS 앱 개발자 데뷔 과정 73회차
#1. DiffableDataSource
iOS 13 이상부터 사용 가능한 DiffableDataSource는 사용자 경험을 위한 애니메이션 구현이 쉽고, IndexPath도 사용하지 않는다.
참고) 기존 DataSource 방식


- Snapshot
snapshot은 현재 UI State에 대한 truth를 말하며, 자기 자신만의 버전을 가지고 있다.
snapshot을 통해 컬렉션뷰/테이블뷰에 데이터를 제공하고, snapshot을 통해 데이터의 변경 사항들을 확인한다.
apply() 메서드를 통해 IndexPath에 대한 연산, 섹션이나 셀 추가, 삭제, 이동 등을 수행하게 된다.

- Hashable (feat. UUID)
데이터 중복을 허용하고 싶다면, Model에 Hashable을 준수하는 고유 식별자가 있어야 한다.

모든 프로퍼티가 같을 경우에만 중복으로 인식하기 때문에, UUID를 통해 랜덤 아이디를 부여하는 것이다.
이 때 모델이 구조체가 아닌 클래스라면, 참조 형식이기 때문에 발생할 수 있는 데이터 중복을 해결하기 위해 추가적인 코드가 필요하다.

- DiffableDataSource 예시 코드



