전체 글
-
[iOS] Coordinator with Clean Architecture DiContaineriOS 2025. 3. 6. 15:44
저번에 Tuist로 clean architecture를 적용시키다가 coordinator에 대해 미숙한채로 적용하다 보니 따로 공부 하기 위해 여기 작성해본다. 우선 coordinator는 직역하자면 조정하다 뭐 이런 뜻이고 화면 이동에 관한 것들을 관리하는 디자인 패턴이다.ViewController에서 Push나 Pop을 해주면 ViewController자체에서 하는일이 너무 많아 지고 그것은 결국 전체적인 코드 파악에 영향을 준다. 우선 먼저 Coordinator에 기본적인 부분부터 예시를 따라해보겠다.Coordinator를 여러가지로 살펴보다 보니 Delegate와 거의 동일 했다 ViewController에서는 Coordinator로 이벤트 전달하고 Coordinator는 다시 전체 AppCoor..
-
Tuist Clean Architecture 적용기 - 2iOS 2025. 2. 25. 15:03
저번 게시물에서 Tuist의 기초에 대해 다뤘다면 지금은 그걸 토대로 Clean Architecture를 적용하는 과정동안 고민하면서 적용 시켰던 과정을 끄적여 보겠습니다. 우선 간단하게 Clean Architecture는 시스템을 계층화 하여 보수성과 확장성을 높이는것을 목표로 하고 의존성 역전 원칙을 중심으로 비즈니스 로직을 외부 프레임 워크나 UI로 부터 독립적으로 유지하는 것입니다. 독립적, 보수성, 확장성이 Tuist와 잘 어울릴거 같습니다. 우선 제가 생각한 구조는 위 그림과 같습니다.Clean Architecture에서는 Domain Layer는 Data Layer와 Presentation Layer만 보고 있어야 하고 Domain은 어떠한 의존성도 가지고 있으면 안됩니다. 또한 의존성 주입..
-
Tuist Clean Architecture 적용기 - 1iOS 2025. 2. 24. 15:34
어느날 회사 프로젝트의 리빌드의 베이스 작업을 맡게 되어서 Tuist에 Clean Architecture을 적용해보기로 생각했다.일단 Tuist가 뭔지 정확히 몰라 이것저것 둘러 보면서 공부하고 내용을 끄적여 본다. Tuist란? Xcode 프로젝트를 관리 할 수 있는 툴 장점- 모듈화를 통해 의존성을 낮추고 재활용성을 높임- 유지보수가 쉬워짐- 빌드속도가 향상됨 단점- 프로젝트 초기 설정에 시간이 오래걸림- CocoaPod을 지원하지 않음 저는 Tuist 4.21.0을 사용했고 Tuist는 버전에 따라 바뀌는 내용이 많은것 같아서..버전 타겟팅이 중요해 보인다.Tuist 설치과정은 생략.. 먼저 설치하고 Tuist 프로젝트를 만들고 싶은 폴더를 만들어 터미널로 해당 폴더 위치로 이동한다. tuist ..
-
Swift WKWebView 양방향 통신iOS/개념정리 2024. 6. 11. 15:31
apple에서 제공해주는 WKWebView라는 WebView가 있습니다.원하는 url를 load 할 수 있고, 아니면 직접 html String을 load할 수 있습니다.SFSafriViewController라는 것을 사용해서 만들 수 있지만 WKWebView가 좀 더 Custom하기 용이하다구 생각합니다.iOS 8.0 부터 생겼고, WebKit을 import해서 사용하면 됩니다.프로젝트에 들어가면 온전한 native소스가 아닌 webView와 같이 사용하는경우가 많습니다.거기서 참고할 만한 간단하게 WebView -> Native랑 Native -> WebView를 알아보겠습니다.우선 htmlString을 사용하여 간단하게 웹뷰를 구성하고 그 구성한것들을 이용하여 통신 해보겠습니다. 화면 구성 다음과 ..
-
[iOS] Alamofire + Combine with Clean ArchitectureiOS/개념정리 2024. 1. 29. 13:23
Alamofire - Swift를 기반으로 한 Http 네트워킹 라이브러리이다. Combine - 시간의 흐름에 따라 값을 처리하기 위한 프레임 워크(비동기 통신 프레임 워크) 위 두개를 사용하여 http통신을 하여 데이터를 비동기로 받아오는 예시를 Can 프로젝트에 작성해 보겠습니다. 사용할 API는 https://jsonplaceholder.typicode.com/ 에서 posts와 users를 사용할 것입니다. Clean Architecture에 따라 가장 안쪽 부터 작성하겠습니다. 먼저 Domain Layer에 Entity에 모델을 만들어 줍니다. 사용할 모델 posts와 users에 해당하는 모델을 만듭니다. 다음으로 인터페이스를 작성해주고, 그걸 활용하여 viewModel에 사용할 수 있도록 ..
-
<Swift>Combine(2) 사용하기iOS/개념정리 2023. 3. 15. 15:53
Combine을 공부하다 보니 이해가 안되는 부분이 있어 익히면서 공부해 볼까 합니다. 일단 새프로젝트를 열고 텍스트 필드 두개를 생성하고 버튼 하나를 만들어서 두 텍스트 필드에 입력된 문자가 동일하면 버튼을 활성화 하는 방법으로 Combine방식과 MVVM패턴을 활용해서 만들어 볼까 합니다 우선 main 화면을 그려주자. 위 화면에서 상단 텍스트 필드와 하단 텍스트 필드의 텍스트가 같으면 아래 "내 버튼"을 활성화 시켜줄꺼다. 일단 두 텍스트 필드와 하나의 버튼에 outlet을 잡아주자. 이런식으로 3개의 outlet을 잡아주면 다음으로 새로운 파일 "ViewModel.swift" 파일을 만들어준다. 일단 처음에 텍스트 필드에 관한 Combine을 적용 시켜 줄껀데. UITextField Extensi..
-
<Swift> Combine(1) 사용하기iOS/개념정리 2023. 3. 3. 16:51
Combine 이란 애플에서 만든 비동기 이벤트를 처리하기 위한 프레임 워크 iOS 13부터 적용 가능 Combine 3 요소 publisher -> 데이터를 내보냄 형태로 하나는 이벤트 데이터 하나는 에러 타입(NEVER는 어떠한 에러도 반환하지 않음) Operator ->이벤트를 가공 subscriber -> 이벤트를 받음 Playground에서 보자면 먼저 상단에 Combine을 임포트 해주고 시작해야 합니다. 위처럼 Publisher를 myIntArrayPublisher로 설정해 주고 sink는 클로저 형태로 데이터를 받는 Subscriber 입니다. 위 코드는 Error 타입을 Never로 정했기 때문에 실패타입은 항상 Never입니다. 공부를 위해 failure를 넣었지만 저기를 타진 않습니다..
-
<Swift>Skeleton 사용하기iOS/개념정리 2022. 10. 31. 21:54
앱을 사용하다보면 위와 같은 로딩 뷰를 본적이 있을텐데 오늘은 위와 같은 로딩 뷰 skeleton 사용법을 알아보자! 프로젝트를 새로 생성 후 해당 경로에 pod init 후에 podfile에 아래 명령어를 삽입해서 Skeleton을 설치 합니다. pod 'SkeletonView' 사용할 ViewController에 가서 "import SkeletonView"를 상단에 넣어 줍니다. 그리고 이제 storyboard를 만들어 줄껀데. 저는 다음과 같이 만들었습니다 4개 view 다른 효과를 줄 껍니다. ( 뒷 배경은 위 캡쳐화면을 위해서 잠시 검정색으로 해서 4개 view가 잘 보이게 작성했습니다.) 그리고 각 뷰마다 설정을 해주어야 하는데. 먼저 스토리 보드를 이용하면 위와 같이 뷰를 선택하여 Attri..