문제점

홈과 리스트 뷰의 로직이 똑같은데

삭제하고 diffable Datasource의 apply를 날리면 오류가 뜬다

스크린샷 2023-10-18 오전 1.15.27.jpg

해결법

dataSource?.applySnapshotUsingReloadData(snapshot)

리로드 포함하는 함수로 바꿨더니 오류가 나지 않는다.

확실히 DB모델을 직접 뷰에서 사용하니깐 조금은 불편한 거같다.

DB모델 → 뷰에서 보여줄 모델로 변환해서 사용해야 할 것 같다.

차이점

applySnapshotUsingReloadData(_:)

<aside> 💡 Resets the UI to reflect the state of the data in the snapshot without computing a diff or animating the changes.

차이를 계산하거나 변경 사항을 애니메이션화하지 않고 스냅샷의 데이터 상태를 반영하도록 UI를 재설정합니다

</aside>

apply(_:animatingDifferences:)

<aside> 💡 Updates the UI to reflect the state of the data in the snapshot, optionally animating the UI changes.

스냅샷의 데이터 상태를 반영하기 위해 UI를 업데이트하고, 선택적으로 UI 변경 사항을 애니메이션화합니다.

</aside>

<aside> 💡 두 함수의 차이점은 차이를 계산 하냐 안하냐의 차이 라고 보인다. apply를 쓰면 오류가 나는 이유는 스냅샷을 찍어서 저장하기 때문인걸로 보인다

</aside>

realm 모델들을 스냅샷을 찍어 저장하고 → 바뀐 데이터를 스냅샷에 추가했을때 두 스냅샷을 비교한다. → 이 때 처음 찍어두었던 스냅샷에 삭제된 realm의 모델이 남아있어 오류가 나오는거같다.

applySnapshotUsingReloadData 는 이전 스냅샷과의 차이를 계산하지 않고, 현재 스냅샷에 들어온 데이터 상태를 반영 하기 때문에 삭제된 realm 모델을 제외한 데이터가 포함되는거로보인다.