Programming 74

tuist로 Clean Architecture 직접 설계 해서 만들어보기

우리 가족에게 온 천사 1명이 있어 천사가 될 때까지 보필하고, 천사를 키우느라 글 작성을 외면하였던 것에 반성하며 글을 쓴다. Clean Architecture를 공부하며, tuist로 프로젝트 초기 세팅을 하면, 조금 더 쉽게 관리할 포인트가 있지않을까해서 작업해보았다. iOS에는 Clean Architecture를 iOS에서 쉽게 사용할 수 있도록 Clean Swift로 된 템플릿을 작성하는 것이 있지만, Clean Architecture는 없다. 템플릿으로 만들 수도 있겠지만, 각 레이어마다 폴더가 다르게 생성되어야하는 데, 그런식으로 템플릿을 만들기엔 실력이 부족…한 탓도 있겠다. 천천히 시간을 갖고 만들어볼까 생각중이긴 하다. Clean Architecture의 기본 트리 구조는 다음과 같다...

Programming/Swift 2023.07.17

Storyboard, Color, Image 등 Resource framework에서 관리하기

앱을 만들다 보면, 공통으로 사용하는 것들이 있어요. color나 image 등이 대표적으로 사용되는 공통 리소스에요. 이 리소스를 리소스 framwork로 만들어서 관리하면, 중복되는 일도 없고, 한 곳에서만 관리하기 때문에 편할 것 같아요. 리소스 framework를 import해서 사용하면 되니까요. 물론 해당 편도 민소네님 글을 보고 작성하였습니다. 바로 이전 편에서 적용했던 프로젝트를 가지고 활용해보겠습니다! 지난 번 Service framework와 마찬가지로 dynamic framework를 생성해주세요. 메인 프로젝트 general -> Frameworks, Libraries, and embedded Content에 Resources 프레임 워크를 추가합니다. 그 다음 Resources f..

Programming/Swift 2022.03.07

메인 프로젝트에 서브프로젝트 주입하기 - 01

안녕하세요. 오랜만에 기술(?)글을 작성하게 되었습니다. 우선 민소네님의 블로그를 참고하였고, 코드 역시 거의 비슷할 수 있습니다. 뭔가 매번 한 발 느린 것 같습니다만, 느려도 일단 시작은 해보는 걸로! 참고1: http://minsone.github.io/ios/mac/ios-framework-part-2-project-subproject-dependencies [iOS][Xcode] Framework Part 2 : 프로젝트, 서브 프로젝트, Dependencies, 그리고 Static, Dynamic Framework 서론 프로젝트를 만들면 해당 프로젝트 내에 서브 프로젝트를 만드는 것에 이야기를 들어본적이 없었습니다. 프로젝트 하나에 모든 코드와 리소스가 다 들어가도록 개발을 했기 때문입니다. ..

Programming/Swift 2022.03.07

Clean Swift

ViewController는 화면 업데이트를 담당하고,Interactor는 비즈니스 로직을 담당한다. Presenter는 Interactor에서 비즈니스 로직을 통해 처리된 데이터를 받아 포맷팅한 데이터를 ViewController에 전달한다. ViewController는 Display Logic Protocol을 채택하여 구현하고, 이를 호출하는 곳은 Presenter에서 한다. 변경된 데이터로 이루어진 화면을 변경해주기 위함이다. Interactor는 Busness Logic Protocol을 채택하여 구현하고, 이를 호출하는 곳은 ViewController이다. Presenter는 Presentation Logic Protocol을 채택하여 구현하고, 이를 호출하는 곳은 Interactor이다. 메..

@State, @Binding

안녕하세요? 갑자기 SwiftUI에 대해 글을 남겨보려고 하는 데요. 저도 외울겸... 슬슬 SwiftUI와 Combine으로 넘어갈 때가 아닌가 싶기도 해서 공부하고 있습니다. 우선 용어정리만 할게요 @State 상위 뷰가 가질 수 있는 상태프로퍼티이자 원천자료이다. 어떠한 데이터를 영속적인 상태로 저장하고 관찰하는 역할을 수행한다. @Bingding 상위뷰가 가진 상태 프로퍼티를 하위 뷰에서 사용하고 수정할 수 있는 파생자료 값을 보유하고 있는 것이 아닌 값을 읽고 수정하여 다른 뷰에 갱신된 데이터를 전달하는 역할을 한다.

[Iterm2] 화면 분할을 해봐요. 전문가처럼 보이도록

안녕하세요. Iterm2 화면 분할에 대해 공부(?) 해보겠습니다. 전문가처럼 보일 수 있도록요 ㅋ 위 창을 보시면 창이 총 3개가 있죠? 새 탭을 만드는 단축키는 command + T 지만 위는 탭이 없고 창만 분할이 되어있어요. 다음과 같이 하려면 좌우 , 상하 분할이 필요한 것인디요 1. 상하 분할 command + shift + d 2. 좌우분할은? command + d 3 . 간단한 오류 수정이라 테스트 서버와 실 서버를 동시에 배포하고 싶다?(서버가 다르다면) command + option + i 4. 위에서 같이 입력했던거 그냥 따로 입력할래! command + shift + option + i 입니다. 쉽쥬?

Programming/ETC 2020.09.18

[iOS] Your enrollment could not be completed

안녕하세요. 오늘은 어떤 것을 가져왔냐면요. 애플 개발자 계정을 돈내고 구입하기 위해서 등록 절차를 진행하던 와중에, 다음과 같은 페이지에 부딫히고 말았어요. 세상에 [Your enrollment could not be completed] Your enrollment in the Apple Developer Program could not be completed at this time. 아니 이거 뭐야 ? 바빠죽겠는 데 아놔 이런 경우는 처음 이네요. 구글로 에러 메시지 복사해서 검색해보기 시작했지요. 검색해본 결과 원인을 여러개 본 결과 대추우웅 유추 해보자면 1. 애플 계정을 등록할 때 나이를 18세 이상으로 등록해야한다. 2. 결제 방법을 신용카드로 할 경우 해외결제 가능카드로 해야한다. 등등.. ..

Programming/Swift 2020.09.18

[Swift] Touch-id, Face-id를 적용해봐요.

안녕하세요. 오늘은 touch-id와 face-id로 본인 인증(?) 이라고 해야할까요? 암튼 그 기능을 테스트 해보려고합니다. 앱을 만들기 위해, 준비중인데요. 보통 앱 구매할 때나, 본인인증이 필요할 때, 이 기능을 많이 사용하는 걸로 알고있어요. 앱스토어에서도 쓰잖아요 그쵸? 암튼 그걸 시작 한 번 해볼게요 일단 프로젝트를 준비 시켜 주시구요. 왼쪽 파일 네비게이터에서 젤 위에 프로젝트 클릭 하신 후 그짝에서 쪼금 더 오른쪽으로 오시면 Project와 targets가 보이실거에요. 여기서 Target을 클릭! Frameworks, Libraries, and Embedded Content 란이 보이시면 +를 눌러주세용 그리고 Local을 검색하여 주시고, 아래 화면에 보이시는 LocalAuthenti..

Programming/Swift 2020.09.04

[Swift] iOS Push Image도 받아보기(Feat.FCM) 2/2

안녕하세요. 1/2는 어디갔냐구요? 1/2는 귀찮아서 2/2 먼저 보고 할려구용ㅋㅋㅋ 오늘은 다음과 같이 ImagePush로 받는 방법을 공부해보려고 합니다. 새로 만드는 앱때문에 테스트 해보면서 진행했습니당 전제조건은 기본적인 FCM 구성과 기본적인 푸시는 날려보시고 오셔야한다는 점입니다? (곧 작성해보지요..) 원래는 글 쓸 생각을 안해서..ㅠㅠ 제 의식대로 글을 써보겠습니다! 그럼 출발! 자 기본적으로 FCM을 받으면 앱이 포어그라운드에 있을 때에는 func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHan..

Programming/Swift 2020.09.01

[ZSH] 수동(?) 업데이트 하기

안녕하세요. 오늘은 별거 아닌 zsh의 업데이트를 리턴키라던지 다른 키를 눌러 패스해버리는 상황이 발생하였을 때, 명렁어를 통하여 수동 업데이트 하는 방법을 보겠습니다. iterm을 키자마자 cd를 치고 플젝을 들어가려 했는 데, 업데이트가 취소 되버렸어요 하 승질머리가 급해ㅓㅅ 그냥 upgrade_oh_my_zsh 치세용 * 추가 upgrade_oh_my_zsh 이 더 이상 사용되지않는다고 하네용. Note: `upgrade_oh_my_zsh` is deprecated. Use `omz update` instead. omz update 를 쓰세욧 그럼 끝. 글도 끝.

Programming 2020.08.20