---
# System prepended metadata

title: 오픈마켓 Rx 리팩토링

---

# 오픈마켓 Rx 리팩토링

오픈마켓 프로젝트에 DiffableDataSource/CompositionalLayout을 적용하고, 기존 화면에 배너화면을 추가하여 리팩토링하는 중입니다.
CollectionView 1개에 2개 Section을 나눠서 
Section-1은 `배너화면`으로 LocalDB의 UIImage을 보여주고,
Section-2는 `상품목록화면`으로 RemoteDB의 Product를 보여주려고 합니다.

문제상황 : dataSource의 타입 (`UICollectionViewDiffableDataSource<Section, Item>`)을 지정할 때, 배너 Item은 `UIImage`, 상품목록 Item은 `Product`라서 dataSource의 타입을 통일시킬 수 없었습니다. (예제코드는 Modern Collection View의 Outline Emoji를 참고했습니다.)

대응 : 일단 `Product` 타입의 `thumbnail` 프로퍼티가 이미지 url을 갖고 있어서 DataSource 타입을 `<SectionKind, Product>`로 통일시키고
SectionSnapshot을 bannerSnapshot/listSnapshot으로 구분하여 의도했던 틀은 완성했으나, 다른 데이터를 보여주지는 못하고 있는 상황입니다. 

의문 : dataSource 종류 자체가 다르기 때문에 CollectionView를 2개 만드는게 더 효율적일까요?
아니면 성능을 고려하여 기존처럼 CollectionView를 1개로 사용하는게 좋을까요?
(만약 하나의 콜렉션뷰를 사용한다면 어떤 식으로 DataSource를 분리할 수 있을까요?)

왓챠 앱 홈화면 보니까 `horizontal Scroll` 하는 Item 대부분이 `영상` 타입인데, 일부 `아티스트/추천장르` 같은 다른 타입이 들어있는 걸 봤습니다.
이런건 어떻게 구현하셨는지 궁금합니다.
(혹시 서버 API에서 동일한 타입의 데이터를 받아 필요한 부분만 화면에 띄워주는 방식일까요?)
너무너무 궁금합니다..!