[Swift] Early Return 패턴
Language/Swift2025. 7. 4. 23:42[Swift] Early Return 패턴

Early Return 패턴. 왜 쓰고 어떻게 활용할까?코드가 복잡해질수록, 그리고 다양한 예외 상황을 다뤄야 할수록 함수 안의 if문 깊이가 점점 깊어지는 걸 경험하게 된다.이럴 때, “Early Return(얼리 리턴)” 패턴을 사용하면 코드가 훨씬 더 읽기 쉬워지고, 실수도 줄어든다. Early Return이란?함수(메서드) 내부에서 특정 조건이 만족되면, 즉시 반환(return)하여 함수 실행을 빠르게 종료하는 코딩 패턴이다.주로 잘못된 입력, 예외 상황, 필요 없는 분기에서 더 이상 실행이 필요 없을 때 사용한다. 왜 Early Return을 써야 할까?불필요한 들여쓰기(Indentation) 방지예외 상황을 초반에 처리 → 주요 로직이 눈에 잘 띄게코드의 흐름을 한눈에 파악 가능누락된 el..

[Swift] 함수와 연산프로퍼티
Language/Swift2025. 6. 22. 02:39[Swift] 함수와 연산프로퍼티

함수와 연산 프로퍼티Swift를 공부하다 보면 함수(Function)와 연산 프로퍼티(Computed Property)를 자주 접하게 된다.얼핏 보면 둘 다 계산을 해서 값을 반환한다는 공통점이 있지만, 실제로는 용도와 동작 방식이 다르다. 함수(Function)함수는 어떤 동작을 수행하고 결과를 반환하는 코드 블록이다. 입력값(파라미터)을 받아서, 내부에서 연산을 처리한 뒤, 결과값을 돌려준다.함수는 호출될 때마다 실행되고, 여러 파라미터를 받을 수 있으며, 함수 이름으로 목적을 명확하게 표현할 수 있다. 예시 코드:func multiply(a: Int, b: Int) -> Int { return a * b}let result = multiply(a: 3, b: 5) // 15함수는 위처럼 호출 ..

[택스리펀 계산기] 계산 로직에 관한 트러블 슈팅 (replacingOccurrences)
프로젝트/택스리펀 계산기2025. 6. 22. 00:01[택스리펀 계산기] 계산 로직에 관한 트러블 슈팅 (replacingOccurrences)

문제 상황계산 로직을 구현하면서, 문제가 생겼다. 1. 구매금액을 입력하고 계산하기 버튼을 클릭2. 텍스트필드에 입력한 값이 구매금액으로 넘어가고, 하단에 기준 통화로 변환되어서 나온다.3. 그리고 구매금액과 부가세를 곱해서 예상 환급금액으로 넘어가고,4. 예상 환급금액과 환율을 곱해서 기준 통화로 변환해서 아래에 띄운다. 위의 로직으로 작동하고 있는데, 문제는 기준통화로 변환하는 부분들에서 문제가 생겼다. 문제 현상은 아래와 같다.1. 한국만 넣으면 문제가 생김.2. 일본 혹은 각 유럽국가는 문제가 없었음. 여기서 한국만 넣으면 문제가 되는 부분이 핵심이었다. 원인환율 정보는 팀원이 환율을 저장하기 위해 구현해놓은 UserDefaults에서 아래와 같이 받아온다.// UserDefaults에서 환율 ..

[택스리펀 계산기] 시작하기 버튼 로직(빈칸검증 예외처리, SceneDelegate에서 if문으로 rootViewController 결정)
프로젝트/택스리펀 계산기2025. 6. 11. 01:35[택스리펀 계산기] 시작하기 버튼 로직(빈칸검증 예외처리, SceneDelegate에서 if문으로 rootViewController 결정)

작업내용첫 화면(초기설정)의 시작하기 버튼에 로직을 구현하였다. 1. 입력 검증모든 텍스트필드가 채워졌는지 검증 (아니라면 시작하기 버튼 클릭시 얼럿 띄움)채워졌다면 UserDefaults에 true를 저장하고 TabBarController로 화면 넘김 2. if문으로 rootViewController 결정이후 재부팅시 SceneDelegate에서 UserDefaults에 true가 있는지 확인, 있다면 TabBarController,없다면 초기설정을 위해 StartPageVC(첫화면)으로 이동하도록 if문으로 체크 입력 검증ViewModel뷰모델에 아래 코드 구현// MARK: 텍스트 필드들 빈칸 확인 예외처리 func isInputValid(language: String?, baseCurren..

[택스리펀 계산기] Combine을 활용하여 정보 실시간 반영
프로젝트/택스리펀 계산기2025. 6. 8. 02:22[택스리펀 계산기] Combine을 활용하여 정보 실시간 반영

설정화면에서 여행국가 화폐 또는 기준 화폐를 변경했을때,계산화면에서도 바로 실시간 반영이 되도록 구현해야 했다. NotificationCenter와 Combine중에서 고민했는데,Combine은 Swift에서 공식적으로 지원하는 비동기/반응형 데이터 흐름 처리 방식으로 타입 안전성, 코드의 가독성, 유지보수 측면에서 더 큰 장점이 있다고 판단했고,MVVM 패턴과의 궁합도 좋아 ViewModel 간 데이터 전달이 더 명확해지기에 Combine으로 결정했다. 먼저 파일은계산화면 - CalculateVC(뷰)설정화면 - SettingVC(뷰), SettingVM(뷰모델) 파일만 다뤘다. SettingVM 가장먼저 Combine을 import 해주고,SettingVM을 싱글톤 패턴으로 만든다.다른 화면에서도..

[택스리펀 계산기] UI 1차 구현 완료
프로젝트/택스리펀 계산기2025. 6. 6. 22:43[택스리펀 계산기] UI 1차 구현 완료

택스리펀 계산기의 1차 UI 구현이 완료되었다. (사실 완성된지는 꽤 오래 되었고, 지금은 로직을 구현하고 있지만.... 블로그에 글을 작성하는 것을 깜빡했다..)전체적인 UI는 현재 모양대로 진행되지만, 작업을 진행하면서 작은 디테일들은 점점 바뀔 가능성이 높다. 내가 맡은 부분은,- 처음 시작화면- 계산 화면- 설정 화면 팀원이 맡은 부분은,- 계산 기록 화면- 실시간 환율 화면 이렇게 총 5개 화면이지만, 뭐 각자 맡은 파트에서 모달 구현까지 포함하면 10개정도 될 것 같다. 내가 맡은 부분을 정리하자면, 시작화면 처음 시작화면과 언어 선택란을 탭했을때 뜨는 모달, 그리고 기준 통화와 여행 국가를 선택했을때 뜨는 모달이다.해당 데이터들은 UserDefaults에 저장이 되고, 추후 화폐를 띄우는..

[택스리펀 계산기]버튼이 클릭되지 않는 현상에 대한 트러블 슈팅
프로젝트/택스리펀 계산기2025. 6. 1. 00:12[택스리펀 계산기]버튼이 클릭되지 않는 현상에 대한 트러블 슈팅

개요 위의 화면에서, 환급 조건 보기를 클릭하면, 만들어 둔 모달이 뜨게끔 구현을 해뒀음.하지만 버튼 자체가 클릭되지 않는 문제 발견.따라서 당연히 모달도 뜨지 않음. 전개1. 기본적인 구현 체크레이아웃도 문제 없고, addTarget로 제대로 구현해뒀음-> 원인 아님 2. 카드뷰의 사이즈 문제?레이아웃을 잡으면서 카드뷰 사이즈를 너무 작게해서 터치이벤트를 받을 수 있는 버튼의 위치가 틀어졌나?-> 카드뷰 사이즈 키워봄. 해결안됨 3. 카드뷰의 사이즈 문제가 아니니, 버튼들이 제대로 자리잡고 있는지 확인해보자.버튼들은 스택뷰로 나란히 처리했는데, 아래의 사진처럼 스택뷰에 배경색을 줘서 제대로 자리잡고있는지 확인-> 문제 없음. 4. 작은 기종에도 대응하기 위하여 스크롤뷰로 사이즈를 맞추고 있는데, 해..

[택스리펀 계산기] 모달 간격 조정에 관한 트러블슈팅
프로젝트/택스리펀 계산기2025. 5. 8. 23:48[택스리펀 계산기] 모달 간격 조정에 관한 트러블슈팅

문제 국가를 선택하는 모달창에서, 모달의 첫번째 셀이 상단과 너무 딱 붙어있어서 tableView.contentInset.top = 16해당코드로 inset 값을 16만큼 주었다.하지만 모달이 다시 나타날때 여전히 너무 딱 붙어있고,한번 스크롤 해야지만 이런식으로 간격이 정상적으로 벌어지는 현상이 있었다. 원인"UISheetPresentationController의 레이아웃 시스템과 UITableView의 초기 콘텐츠 오프셋 동기화 이슈"가 원인이다.이 문제는 iOS 15 이상에서 UISheetPresentationController를 사용하면서 흔히 발생하는 이슈라고 한다. 해결단순한 contentInset 설정만으로는 해결되지 않는 경우가 있고,정확히 원하는 위치에서 tableView.setCo..

프로젝트/택스리펀 계산기2025. 5. 8. 15:49[택스리펀 계산기] 기획

프로젝트 Ting이 끝나고,포트폴리오를 조금 더 채우기 위해서 프로젝트를 하나 더 하기로 결심했다. 기존 팀원들 중 한분과 뜻이 맞아 같이 프로젝트를 진행하기로 하였다. 🌍 택스리펀 계산기 앱 개발 계획 해외 여행 중, 구매한 물품에 대해 얼마나 택스리펀을 받을 수 있는지 간편하게 계산할 수 있는 앱을 개발할 계획.앱의 주요 기능과 특징은 다음과 같다: 🔧 주요 기능 • 오프라인 모드사용자가 직접 환율을 입력하여 계산할 수 있는 기능을 제공합니다. 인터넷 연결이 되지 않는 환경에서도 사용할 수 있음 • 온라인 모드실시간 환율 정보를 자동으로 불러와, 보다 정확한 환산과 계산을 할 수 있음 • 택스리펀 계산여행 중인 국가를 선택하고 물건의 가격을 입력하면: • 해당 국가의 통화와 현재 환율 • 부가가치..

[Ting] 유저피드백 / Textfield 공백검증, 특수문자 검증 구현, 키보드 내리는 기능 구현
프로젝트/Ting2025. 2. 19. 23:07[Ting] 유저피드백 / Textfield 공백검증, 특수문자 검증 구현, 키보드 내리는 기능 구현

유저피드백을 받았다. 1. 닉네임 이외에 다른 필드에서 공백 한번으로 비어있는 정보 생성 가능2. 특정 필드의 정보만 변경하고 싶은데, 한번 클릭하면 마지막 필드까지 내려갈때까지 키보드를 내릴 수 없음. 위 두가지 사항을 피드백 받았다.수정해야할 부분이다. 닉네임 중복검증 및 공백, 특수문자 검증에만 신경 쓴 나머지 다른 부분들을 체크하지 못했다.키보드도 마찬가지. 텍스트필드간의 이동 및 작성 완료시 키보드가 내려가는것에만 집중한 나머지 한가지 필드만 수정할지도 모르는 케이스를 간과하고 말았다. 수정해보자. 먼저 텍스트필드에 예외처리를 해보자 다른 파일에서도 코드를 재사용할 수 있도록, 별도의 파일로 분리를 해두었다.import UIKit// MARK: - 공백, 줄바꿈으로만 입력되었는지 체크func ..

image