iOS 프로젝트/클론

[iOS] 넷플릭스 클론 코딩 4. CoreData 사용 (영상 끝)

유정주 2023. 5. 15. 19:22
반응형

* 진행 코드는 https://github.com/jeongju9216/Jetflix에서 볼 수 있고, PR에서 에피소드 단위로 코드를 확인할 수 있습니다.

 

 

이번 포스팅까지가 영상을 따라 구현하는 내용입니다.

다음 포스팅부터는 스스로 고민하며 리팩토링하는 과정을 작성하겠습니다.

 

서론

넷플릭스 클론 코딩 - 4 내용은 Amr 유튜브 채널의 Building Netflix App in Swift 5 and UIKit - (Xcode 13, 2021) 에피소드 11, 12, 13, 14 내용입니다.

에피소드 11, 12, 13, 14에서는 유튜브 API와 웹뷰를 사용해 트레일러 영상을 재생하고, CoreData를 이용해 Entity를 저장하는 과정까지 진행했습니다.

 

구현 내용

  1. Youtube Data API 사용
  2. WebView를 이용해 Youtube 영상 재생
  3. CollectionView UIContextMenuConfiguration 구현
  4. CoreData를 이용한 엔티티 save, fetch, delete

이번 클론 코딩을 통해 WebView를 처음 사용해보았습니다.

웹뷰의 사용법이 생각보다 훨씬 더 간단해서 놀랐습니다.

func configure(with model: VideoPreview) {
    guard let url = URL(string: "...") else { return }

    webView.load(URLRequest(url: url))
}

물론 영상을 따라 구현한거라 제대로 공부는 하지 않았지만, 가볍게 봤을 때는 결과에 큰 문제는 없어보였어요.

 

CollectionView의 UIContextMenuConfiguration도 사용해보았습니다.

아이템을 길게 눌렀을 때 팝업 메뉴가 나오는 기능인데요.

놀랍게도 클론 코딩 전에 이 기능을 구현해보고 싶어서 롱클릭, 배경 불투명하게 하는 법 등을 서치하고 있었는데

이번 클론 코딩 과정에서 알게되서 정말 놀랐습니다.

클론 코딩이 나쁘기만 한건 아니구나... 라는 것을 다시 한 번 느꼈어요.

 

위 다운로드 버튼을 누르면 CoreData에 모델 객체가 저장됩니다.

비디오 다운로드는 아니고 그저 엔티티 객체를 저장하는 의미의 다운로드에요 ㅎㅎ;

이렇게 저장한 객체는 다운로드 탭에서 볼 수 있습니다.

테이블뷰의 스와이프 Delete 기능도 가볍게 구현해보았습니다.

 

리팩토링 계획

  1. MVC를 MVVM으로 변경
  2. ViewModel을 이용해 데이터 바인딩
  3. 다운로드 버튼, 재생 버튼 이벤트 구현

 

마무리

다음 포스팅부터는 클론 코딩의 영상에서 어떤 점을 개선할 수 있을지 직접 고민해보고 고치는 과정을 다루려고 합니다.

클론 코딩이 그저 따라만 치는 거에서 끝나면 큰 의미가 없겠고, 스스로 고민하는 지금부터가 진짜겠죠.

취준이 끝나면 보다 가벼운 마음으로 학습을 할텐데 마음이 무겁네요.

 

감사합니다.


아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

 

 

 

반응형