인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

hanmix2003님의 프로필 이미지
hanmix2003

작성한 질문수

[iOS] Swift Modern Collection View & MVVM 패턴 가이드

모든 강의 수강 후 종합적으로 궁금한 내용에 대해 질문드립니다.

작성

·

467

·

수정됨

1

안녕하세요 좋은 강의 감사합니다!

강의를 모두 수강하고 궁금한 점이 있어서 질문글을 작성합니다.

  1. DiffableDataSource에 사용되는 Section과 Item의 경우 ViewController에 작성하는 것을 많이 봐왔는데 ViewController가 아닌 다른 swift 파일에 정의를 해도 흐름에는 문제가 없겠지요?
    예를 들면 ViewModel 같은 곳에서 dataSource를 적용해서 View에 넘겨준다고 한다면 ViewModel에 작성하는게 가독성이 있는 것인지에 대해 궁금합니다.

  2. CellRegistration으로 셀을 등록하는 것과 register로 셀을 등록하는 것의 차이가 있을까요?
    구글링을 해보니 collectionView를 xib파일이나 코드로 작성하는 경우에는 register로 셀을 등록한다고 하는데 제가 진행했던 프로젝트에서 코드베이스로 DiffableDataSource를 사용해서 collectionView의 셀을 등록할 때 CellRegistration으로 했어도 별 문제가 없었던 것이 기억이 나서 질문 드립니다.

  3. CompositionalLayout으로 Layout 그리실 때 HeightDemension의 경우 absolute로 하시던데 이건 케바케 일까요? absolute로 설정하게 될 경우 작은 사이즈의 디바이스에 대응하는 것이 어렵지 않을까 하는 생각이 들었습니다. 현업에서도 fractional 말고 absolute나 estimated로 그리는 경우가 어느 정도 있는지 알고 싶습니다.

  4. 제너릭한 Network 클래스를 작성하실 때 get 메소드에 대한 코드가 있는 이유는 사용하신 API에서 get 메소드만을 사용하기 때문이라고 생각하고 있습니다.
    만약 post나 patch 같은 HTTP 메소드를 사용한다고 하면 각각에 대응하는 메소드를 만들어서 써야하는 것인지 궁금합니다. 제너릭하다고 하셔서 다양한 HTTP 메소드에 대응 할 수도 있다고 생각했는데 get 메소드에 대한 코드만 있어서 이 부분이 궁금했습니다.

  5. APIKEY와 같이 보안이 중요한 것들은 현업에서 어떤 식으로 관리하는지 궁금합니다. Info.plist에 두는 방법도 본 적이 있는 것 같은데 그외 현업에서 관리하는 방법을 알고 싶습니다.

 

쓰고보니 질문이 너무 많네요 ㅎㅎ;;

다음 강의도 현업의 노하우를 전수해주는 강의가 되었으면 합니다.

감사합니다.

답변 2

1

덤벨로퍼님의 프로필 이미지
덤벨로퍼
지식공유자

 

1. 다른 파일에 정의를 해도 흐름에는 문제가 없습니다. 코딩 스타일에 많이 좌우되겠지만 일반적으로는 ViewModel에서 정의하는 경우가 많을듯 합니다. 다른 로직들이 VM에서 관리되고있을텐데 데이터소스 또한 다른 로직들과 연관이 많이 되어있을 수도 있구요! 

2. CellRegistration으로 해도 차이는 없습니다 register가 예전 방식이라 CellRegistration 으로 진행 했어도 좋았겠네요 

3.네 고정값인 경우 absolute 를 사용하고 그렇지 않으면 fractional을 사용합니다 보통 디자인이 높이 고정으로 구현을 원하면 absolute를 사용합니다 만약 셀이 grid형태라면 이미지의 비율을 지키기 위해 width가 디바이스의 너비를 기준으로 정해지고 그 너비에 따라 높이도 맞춰줘야 하지만 리스트 타입이라면 높이 고정인 경우가 있습니다.

4.네 사용하는 API가 get요청만 있어서 그랬습니다 만약 put post 요청을 더 해야한다면 그에맞는 메소드를 따로 구현할수도 있고 만약 하나의 메소드로 더 범용적인 사용을 원한다면 파라미터에 Request객체를  (method, parameter, interceptor, encoding, header 등 정보가 있는)  넘겨줘도 좋을듯 합니다.

5. 네네 info plist에 두고 코드에서 키값을 통해 받아 사용합니다 !

질문 확인이 너무 늦어져서 죄송합니다. 좋은 질문 주셔서 저도 많은 도움과 피드백이 되었습니다!
부족한 강의 들어주셔서 감사하고 다음 강의도 꼭 잘 만들어보겠습니다 ㅎㅎ

0

안녕하세요, 인프런 AI 인턴이에요. 질문 주신 내용에 대해 답변 드리겠습니다.

DiffableDataSource에 대해서 Section과 Item을 ViewController가 아닌 다른 swift 파일에 정의하는 것은 가능합니다. ViewModel 등의 다른 파일에서 DiffableDataSource를 정의하고, 작성한 데이터를 ViewController에 넘겨주면 됩니다. 이렇게 분리하면 코드의 가독성과 유지보수성이 좋아질 수 있습니다.

CellRegistration과 register로 셀을 등록하는 것의 차이점은 크게 없습니다. register로 셀을 등록할 때에는 UICollectionViewCell을 코드베이스로 작성한 경우에 사용하고, CellRegistration은 xib파일로 작성한 경우에 사용합니다. 하지만 두 가지 방법 모두 DiffableDataSource에 문제 없이 적용할 수 있습니다.

CompositionalLayout에서 HeightDimension을 absolute로 설정하는 경우와 케바케인 것은 아닙니다. absolute로 설정하면 고정된 크기의 아이템이 나오게 되므로, 작은 사이즈의 디바이스에 대응하기 어려울 수 있습니다. 더 동적으로 크기를 조절하고 싶다면 fractionalWidth를 사용하거나, estimated를 적용하여 자동으로 크기를 조절할 수 있습니다.

더 궁금한 점이 있으시면 언제든지 질문해주세요. 즐거운 학습되시길 바랄게요!

hanmix2003님의 프로필 이미지
hanmix2003

작성한 질문수

질문하기