iOS(49)
-
Map과 FlatMap, CompactMap
스위프트는 함수를 일급 객체(First class)로 취급하기 때문에 함수를 다른 함수의 전달인자로 사용할 수 있다. 매개 변수로 함수를 갖는 함수를 고차 함수(Higer order function)라고 한다. 이와 같은 함수 고차함수를 사용하는 이유는 다음과 같다 코드의 재사용 컴파일러 최적화 다중 스레드 환경 시 안전함 책과 블로그를 통해서 개념이 잘 와닿지 않는 다면 문제를 풀어보는 것도 좋은 방법이다. 고차 함수를 이용해서 코드 작성해본다면 왜 쓰는지, 어떤 의미인지 알게 될 것이다. 클로저에서 파라미터와 반환 타입과 return 키워드는 생략이 가능하다. Map 매개변수로 전달된 함수를 실행하여 그 결과를 다시 반환해주는 함수 Sequence와 Collection 프로토콜을 따르는 타입과 옵셔널..
2022.03.21 -
iOS XCTest 코드 (1)
먼저 CI / CD, iOS앱의 배포 과정 그리고 툴들에 대해 간략히 알아보자 CI / CD - Continuous Integration 지속적 통합 / Continouous Distribution 지속적 배포 CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포입니다. 특히, CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링하는 것입니다. 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라 부릅니다. - Red hat - 요약하자면 CI는 코드 레벨 테스트 자..
2022.03.02 -
Class function과 Static function
작성 이유 HealthKit Weekly를 작성 중에 WWDC 프로젝트 예제에서 class func이 사용되었다. static과 class function이 Type method라는 것만 알고 정확한 차이를 몰라 작성하게 되었다. 먼저 둘의 차이는 재정의 가능 여부이다. class function은 상속받아서 재정의 가능하다. Method는 크게 Instance Method와 Type Method로 나눌 수 있다. Instance Method 클래스 인스턴스가 생성된 후, 인스턴스가 주체가 되어 실행하는 메소드이다. 일반적인 클래스 내에 선언된 메소드이다. Type Method 클래스 인스턴스없이, 실행가능한 메소드이다. 사용 이유는 메소드 선언이 필요하지만, 인스턴스가 필요 없는 경우이다. 주의 할 점..
2022.02.28 -
🌱 RxSwift 성별 토글 버튼만들기
이 글을 쓰게 된 이유 새싹 프로젝트에서 성별을 선택하고 회원가입을 하는 화면이 있었다. Rx로 단순 토글 버튼을 만드는 것은 쉬웠지만, 연관된 토글 버튼을 만드는 것은 나에게 조금 힘든 도전이었다. 예를 들어 남자를 선택했을 때, 여자가 선택되어 있으면, 여자를 해제하고 남자를 선택해야하고, 남자를 한 번더 선택하면 선택해제가 되게 해야했다. 말로는 쉬운데 이게 참 구현하기 힘들었다. 과정 처음 Rxswift로 토글 버튼을 만드는 법을 검색해보니 .scan으로 이전 상태를 이용해서 간단히 만들 수 있었다. //Controller Input(button.rx.tap) //ViewModel Output(buttonTap) { buttonTap. scan(false) { lastState, _ in retu..
2022.02.24 -
API의 응답 코드는 어떻게 관리하는 것이 좋을까?
왜? 프로젝트 중 API의 응답 코드를 피처별로 나누다가 의문이 생겼다. 응답 코드를 어떻게 관리하는 것이 효율적일까? 현재 응답 코드는 API 별로 200, 201, 202, 401, 406, 500, 501코드로 내려온다. 응답마다 메시지를 다르게 해야해서 API응답 코드 enum도 API 갯수만큼 만들고 있다. 에러는 다른데 응답 코드가 같아서 생기는 일이다. 현재 API 응답 코드 Twitter의 응답 메시지 및 코드 { "errors": [ { "parameters": { "end_time": [ "2026-10-31T23:59Z" ] }, "message": "Invalid 'end_time':'2026-10-31T23:59Z'. 'end_time' must be a minimum of 10 ..
2022.02.22 -
🥁 SwiftLint with SPM
vi Mintfile brew install mint 커밋 컨벤션에 이은 협업 시리즈 2탄이다. 왜? 먼저 swiftLint는 무엇이고, 왜 도입해야하는지를 알아보자 스위프트 스타일 및 컨벤션을 강제하기 위한 도구 그럼 이 도구를 왜 도입해야 할까? 주된 이유는 코드 컨벤션 체크를 자동화하여 보다 핵심 기능에 집중할 수 있기 때문이다. 즉, 코드 컨벤션이 있다하더라도 자기도모르게 지키지 못했을 경우가 있을 것이다. 내가 그렇다. 이번에 swiftLint를 적용하면서 400개 가량 이슈가 발생하였다. 개인 프로젝트에서 나름의 컨벤션을 정하고도 이렇게 나왔는데 팀 협업에서는 컨벤션을 강제할 필요성이 더 크다고 생각한다. 설치 방법 Homebrew 설치 -> Mint 설치 SPM환경에서 사용하려면 Mint를..
2022.02.21