[iOS] 넷플릭스 클론 코딩 3. 이미지 표시
·
iOS 프로젝트/클론
* 진행 코드는 https://github.com/jeongju9216/Jetflix에서 볼 수 있고, PR에서 에피소드 단위로 코드를 확인할 수 있습니다. 서론 넷플릭스 클론 코딩 - 3 내용은 Amr 유튜브 채널의 Building Netflix App in Swift 5 and UIKit - (Xcode 13, 2021) 에피소드 7, 8, 9, 10 내용입니다. 에피소드 7, 8, 9, 10에서는 Upcoming 화면과 Search 화면에 CollectionView를 등록하고, 이미지를 보여주는 작업을 했습니다. 이 파트를 보면서 알게된 것은 ViewModel을 View에서 사용하는 Model로 구현하고 있다는건데요. 단어만 보면 틀린건 아닌거 같은데... MVVM에서의 VM 역할과는 거리가 멀다고..
[iOS] 넷플릭스 클론 코딩 2. 네트워크 통신
·
iOS 프로젝트/클론
* 진행 코드는 https://github.com/jeongju9216/Jetflix에서 볼 수 있고, PR에서 에피소드 단위로 코드를 확인할 수 있습니다. 서론 넷플릭스 클론 코딩 - 2 내용은 Amr 유튜브 채널의 Building Netflix App in Swift 5 and UIKit - (Xcode 13, 2021) 에피소드 5, 6 내용입니다. 에피소드 5, 6에서는 네트워크 통신을 진행했습니다. API는 https://www.themoviedb.org를 사용했고, 사용법은 원본 영상을 참고해 주세요. 구현 내용 네트워크 통신 Protocol과 Enum을 이용해 Mixed Type 파싱 completionHandler -> async/await 변경 Domain, Data 레이어 추가 Repo..
[iOS] 넷플릭스 클론 코딩 1. 기초 UI 구현
·
iOS 프로젝트/클론
서론 넷플릭스 클론 코딩 - 1은 Amr 유튜브 채널의 Building Netflix App in Swift 5 and UIKit - (Xcode 13, 2021) 에피소드 1, 2, 3, 4 내용입니다. 아직 초반이라 그런건지, 클론 코딩이라 그런건지 코드를 보면 확실히 일회성 코드라고 느껴졌습니다. 이런 부분은 포스팅에 기록해두고 리팩토링을 하며 유의미한 클론 코딩 경험을 가지려고 합니다. 구현 내용 에피소드 1, 2, 3, 4에서는 아래 내용을 진행했습니다. TabBar 생성 ViewController 파일 생성 및 TabBar 등록 HomeVC에 TableView 추가 Table HeaderView 추가 네비게이션바 설정 위로 스크롤 시 네비게이션바가 숨겨지도록 설정 아래는 지금까지 구현한 스크린..
[iOS] 넷플릭스 클론 코딩 0. 목표
·
iOS 프로젝트/클론
목표 기존에는 클론 코딩의 효과에 대해 의아함이 있었지만, 인턴십을 하면서 생각이 바뀌었습니다. 클론 코딩을 하면서 스킬이 늘고 다른 프로젝트에 응용할 수 있기 때문입니다. 이번 넷플릭스 클론 코딩도 이와 같은 목표로 시작합니다. 넷플릭스 앱에는 이미지, 리스트와 관련된 기능이 많습니다. 1. 가이드에 따라 개발을 하고, 2. 제 코드 스타일로 리팩토링을 하고, 3. 제 개인 프로젝트에 기술을 적용을 해보려고 합니다. 클론 코딩은 1년 전에 Amr 유튜브 채널에 게시된 영상을 토대로 진행하고, 다음 넷플릭스 클론 코딩 - 1부터 본격적인 포스팅을 시작하겠습니다. 감사합니다. 아직은 초보 개발자입니다. 더 효율적인 코드 훈수 환영합니다! 공감과 댓글 부탁드립니다.
[Swift] Enum을 이용한 Mixed Type JSON 디코딩
·
Swift/개념 & 응용
서론 JSONArray의 아이템 타입이 혼합될 수 있습니다. let mixedData = """ [{ "type": "movie", "id": 100, "title": "타이타닉", "country": "USA" }, { "type": "person", "id": 101, "name": "레오나르도 디카프리오", "role": "Actor" }, { "type": "music", "id": 102, "title": "My Heart Will Go On", "artist": "Céline Dion" }] """.data(using: .utf8)! 위 JSON을 보면 각 아이템의 type, id는 공통되고 이외 key 구성이 다릅니다. 이럴 경우 type을 이용해 if문으로 처리할 수도 있지만, Enum을 ..
[iOS] UnitTest 사용해보기
·
iOS/개념 & 개발
서론 의존성 주입 등을 공부하면서 "테스트가 쉬워진다."라는 문장을 자주 접했습니다. 오늘은 UnitTest가 무엇인지 알아보고, Xcode의 UnitTest 기능을 간단히 사용해보겠습니다. UnitTest UnitTest는 프로젝트의 특정 모듈이 의도된대로 정확히 작동하는지 검증하는 절차로, 모든 함수와 메서드에 대한 테스트 케이스를 작성하는 절차를 의미합니다. 작성한 프로그램이 의도대로 잘 동작하는지 검증하는 가장 작은 단위의 테스트라고 할 수도 있습니다. 작은 단위의 테스트이므로 테스트에는 의존성을 최소화해야 합니다. 따라서 각 객체의 관심사를 분리해야 하고, 이때 의존성 분리와 주입이 필요합니다. 저도 최근에 의존성에 대한 포스팅을 작성했는데요. 의존성 주입 DI(Dependency Injecti..
[Swift] Dependency Container(feat. Property Wrapper)
·
Swift/개념 & 응용
* 틀린 내용이 있을 수 있습니다. 댓글로 알려주시면 매우 감사하겠습니다. Dependency Container 지난 포스팅에서 DI에 대해 배웠습니다. DI를 하나의 Container로 관리하는 방법이 Dependency Container(DI Container, IoC Container)입니다. 기존 DI는 인스턴스 생성 위치가 분산되었지만, Container를 사용하면서 한 곳에 모아진다는 장점이 있습니다. 동일한 생성자 코드 중복을 줄일 수 있다는 장점도 있습니다. 이번 포스팅에서 (매우) 기본적인 Container를 직접 만들어보고, 다른 포스팅에서 Swinject 라이브러리를 소개하겠습니다. Dependency Container 구현 Dependency Container(이하 Container..
[Swift] 의존성 주입 DI(Dependency Injection)와 IoC(Inversion Of Control)
·
Swift/개념 & 응용
서론 SOLID 원칙 with Swift의 D를 담당하고 있는 의존성은 중요한 개념입니다. 객체 지향에서 객체의 의존성은 빼놓을 수 없는 개념이고, 결합도와 응집도에서 다룬 낮은 결합도의 핵심 방법이기 때문입니다. 의존성과 의존성 주입의 개념 자체는 간단하기 때문에 짧게 다뤄보겠습니다. Protocol을 이용한 ViewModel 의존성 주입 등 지난 여러 포스팅들에서 간접적으로 소개한 적이 있기 때문에 함께 읽어주시면 감사하겠습니다 OvO b 의존성 의존성이란 하나의 객체에서 다른 객체를 참조하는 것을 말합니다. class AClass { var number: Int = 0 } class BClass { var numberClass: AClass = AClass() } let bClass = BClass..
[디자인패턴] Abstract Factory(추상 팩토리) 패턴 with Swift
·
CS/디자인패턴
서론 저번 포스팅에서는 팩토리 메서드 패턴에 대해 알아보았습니다. [디자인패턴] Factory(팩토리) 패턴 with Swift 팩토리 패턴 팩토리 패턴은 팩토리 객체를 이용해 객체 생성 관심사를 분리하는 디자인 패턴입니다. 팩토리 메서드 패턴과 추상 팩토리 패턴으로 나뉘며 Swift에서는 프로토콜로 구현할 수 있습 jeong9216.tistory.com 이번 포스팅에서는 Abstract Factory 패턴에 대해 알아보겠습니다. 연관된 내용이 많으므로 지난 포스팅을 보고 와주세요. Abstract Factory 패턴 추상 팩토리 패턴은 구체적인 클래스에 의존하지 않고 서로 연관된 객체 조합을 만드는 인터페이스를 제공하는 패턴입니다. 지난 포스팅에서 다룬 팩토리 메서드 패턴에서는 PlayerFactory..
[디자인패턴] Factory(팩토리) 패턴 with Swift
·
CS/디자인패턴
팩토리 패턴 팩토리 패턴은 팩토리 객체를 이용해 객체 생성 관심사를 분리하는 디자인 패턴입니다. 팩토리 메서드 패턴과 추상 팩토리 패턴으로 나뉘며 Swift에서는 프로토콜로 구현할 수 있습니다. 팩토리 패턴이 나오게 된 배경은 OCP(개방 폐쇄 원칙)와 연결지어 설명할 수 있습니다. OCP는 확장에는 열려 있지만 변경에는 닫혀 있어야 한다는 원칙인데요. 닫혀 있어야 한다는 것은 확장을 했을 때 다른 부분에 영향을 주지 않아야 한다는 것을 의미합니다. (예시는 여기) 객체 생성 관심사를 분리해서 객체의 속성, 함수 등이 변경될 때 수정이 발생하는 범위를 최소화할 수 있습니다. 팩토리 메서드 패턴 팩토리 메서드 패턴은 인터페이스로 객체 생성 팩토리를 제공하고, 객체 생성 결정은 하위 클래스가 정하는 패턴입니..
유정주
'분류 전체보기' 카테고리의 글 목록 (12 Page)