일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- UIKit
- ios
- Level 1
- 그리디 알고리즘
- iOS개발
- Clean Architecture
- 알고리즘 공부
- 알고리즘
- Python
- Kotlin
- swift
- SwiftUI
- error
- 안드로이드 공부
- greedy algorithm
- Android
- 프로그래머스
- Algorithm
- 앱개발
- 파이썬 풀이
- 백준온라인저지
- dfs
- 정렬
- 백준 온라인 저지
- 공부
- Swift공부
- BFS
- Autolayout
- 파이썬
- 오토레이아웃
- Today
- Total
목록분류 전체보기 (87)
Tori의 개발 공부
🛠 문제 상황WebSocket 서비스를 구현할 때, 서버 URL을 번들에서 가져와 초기화하는 과정이 필요했습니다.서버 URL은 연결을 위해 필수적이므로 init 과정에서 초기화하도록 설계하고 싶었습니다.하지만 번들에서 URL을 가져오는 과정에서 다음과 같은 문제가 발생할 가능성이 있었습니다.번들 내 plist 또는 설정 파일에서 URL이 누락되었을 경우가져온 URL이 유효한 형식이 아닐 경우URL을 가져오는 과정에서 예기치 못한 오류가 발생할 경우따라서init 과정에서 URL 유효성을 검사하고 문제가 발생할 경우 적절한 핸들링을 하도록 처리하여야 했습니다. ✅ 해결 방법WebSocket 서비스 클래스를 만들 때, 초기화 과정에서 URL 유효성 검사를 수행하고,문제가 발생하면 throws를 활용해 예외..
문제 상황맥락 에러(ContextualError) 도입 후 문제 발생맥락 에러를 통해 에러의 발생 위치와 상황을 명확히 하려 했으나, 일부 레거시 코드로 인해 에러가 올바르게 전달되지 않고 비효율적으로 처리되고 있었습니다.레거시 코드로 인한 의존성 및 책임 문제레거시 코드가 여전히 존재하면서 의존성 규칙(Clean Architecture 원칙)이 어긋났고, 각 계층의 책임이 명확히 분리되지 않은 상태였습니다.이러한 문제로 인해 에러 처리 체계의 일관성이 떨어지고, 코드 유지보수 및 확장성이 저하되는 상황이었습니다.해결방법레거시 코드 제거 및 의존성 재정비데이터 계층(Data Layer)에서 발생한 에러(DataError)를 도메인 계층으로 전달할 때, 불필요한 변환 로직과 중복된 에러 처리를 제거도메인 ..
문제 상황CheckButton을 포함한 UITableViewCell에서 다음과 같은 개선 요구사항이 있었습니다:현재는 체크 버튼을 눌러야만 셀 아이템이 선택되는 구조.체크 버튼의 크기가 작아 사용자 입장에서 누르기 불편하며, 체크 버튼 외의 영역(title 등)을 클릭해도 셀 아이템이 선택되도록 개선이 필요.이에 따라 Cell의 contentView를 클릭해도 checkButton을 클릭한 것과 동일한 로직이 실행되도록 연결하는 작업을 진행했습니다.기존 문제기존에는 contentView의 클릭 이벤트와 checkButton.rx.tap 이벤트를 별도로 관리했기 때문에 코드 중복이 발생했습니다.또한, 선택된 Cell을 직접 찾아야 하는 로직이 추가되어 비효율적이고 복잡했습니다.두 이벤트를 동일하게 처리하는..
문제 상황서버에서 임시 저장 로직 구현 시 특정 파라미터에 값이 없을 경우 null 값을 전달해야 한다는 요청을 받았습니다.하지만 [String: Any] 딕셔너리로 파라미터를 전달하고 있었으며, Swift에서는 [String: Any] 딕셔너리에 nil을 직접 추가할 수 없습니다. 예를 들어, 아래와 같은 파라미터를 서버에 전달해야 한다고 가정해 봅시다:{ "username": "example", "profilePicture": null} 여기서 profilePicture는 null로 명시적으로 보내야 한다면, Swift에서 다음과 같이 작성하면 에러가 발생합니다:var parameters: [String: Any] = [:]parameters["username"] = "example"paramet..