전체 글(52)
-
🌱 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 -
🥁 commit 컨벤션
최초 작성일 22.2.18 글을 쓴 이유 취업시장에서 협업 이력을 중요하게 보면서 커밋 그 자체와 커밋 컨벤션도 중요해졌다. 지금까지는 혼자 프로젝트하기도 해서 커밋 메시지에다가 하루 소감을 적거나, 중간 저장 용도로 사용하였다. 블로그 글을 참고해서 커밋을 작성하다보니 규칙이 왔다 갔다해서 스스로 규칙정할 겸 작성한다. 구조 Header : [type] Subject Body : Content footer : 이슈 트래커 번호 타입 feat 기능 추가 fix 버그 수정 docs 문서 수정 refactor 리팩토링 ( 함수와 변수명 수정 포함) test 테스트 코드 chore 프로덕트 내부 코드 또는 패키지 gitignore 파일 style 코드 수정 없는 경우 헤더 문장이 아닌 구 명사로 끝 맺음 바디..
2022.02.18 -
SPM Firebase Crashlytics dSYM 업로드
출시 후 Crashlytics를 추가하면 dSYM을 수동으로 업로드해주어야 한다. cocoa pod은 예제가 많이 있지만, SPM으로 설치한 예제는 많이 없고 기록을 위해 작성한다. dSYM : debug symbol file 컴파일러가 소스코드를 기계어로 변환할때 생성되고 역할은 기계어를 다시 소스코드 라인으로 매핑하는 정보를 가진 파일 dSYM 업로드를 하려면 우선 다음 3가지가 필요하다. 1. upload-symbols 파일 2. dSYM 파일 3. google plist 파일 1번은 User/{사용자이름}/Libarary/Developer/Xcode/DerivedData/{프로젝트}/SourcePackages/checkouts/{파이어베이스}/Crashlytics/ 에 있다. 위 경로에 들어가서 ..
2022.02.14 -
iOS SPM local package 추가하기 RangeSeekSlider
the manifest is missing a Swift tools version specification; consider prepending to the manifest'// swift-tools-version:5.5.0' to specify the current Swift toolchain version as the lowest Swift version supported by the project; if such a specification already exists, consider moving it to the top of the manifest, or prepending it with '//' to help Swift Package Manager find it in 오래된 라이브러리 중에서 S..
2022.02.14