[TIL / 25.03.11] 에러 핸들링(Error Handling)
·
iOS/Swift
swift.org의 에러 핸들링 파트를 보고 클로드랑 같이 병행해서 개념을 익히고 정리해보았읍니다 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/errorhandling#Converting-Errors-to-Optional-Values1. Error Handling에러 핸들링(Error Handling)은 프로그램 실행 중 발생할 수 있는 오류를 감지하고, 이를 적절히 처리하여 정상적인 흐름을 유지하는 과정 예를 들어, 네트워크 메서드를 처리해줌에 있어 발생할 수 있는 오류로 토큰 만료로 인한 인증 오류,, 요청 보낼 당시의 파라미터의 부재,,, 등등 많음. 요렇게 일어날 수 있는 에러들에 있어 어떻게 처리해주..
[TIL / 25.03.11] 숫자 야구 게임을 만들어보았소.
·
Algorithm
1. 구현해야 할 것 이번 주 과제로 숫자 야구 게임을 만들어보도록 한다.설명은 위 이미지를 보면 이해가 될텐데 ,, 어렴풋이 기억이 난다. 다만 이런 자료구조를 이용한 문제 풀이는 거의 생소하다보니 미친듯이 삽질했다,,,,,,흑 2. 구현 내용우선 중간중간 계속 코드를 갈아엎었는데 안되는 이유를 알지만 명확히 쓰기는 좀 힘들어서 최대한 문제 해결 쪽에 초점을 맞추다보니 과정에 대한 이미지가 없다,, 2.1 전체 코드import Foundationstruct BaseBallGame { func start() { var gameHistory = [GameHistory]() var gameCount = 0 while true { ..
[TIL / 25.03.07] IBOutlet이 모두 nil이 되는 현상, 캠프 1주차 회고
·
내일배움캠프
1. 문제 해결1.1 상황코드베이스 UI인 내 페이지에서 스토리보드 기반 페이지인 팀원분의 페이지로 네비게이션 이동해야 했는데, 모든 IBOutlet이 런타임에 nil로 잡히던 현상이 있었다. 해당 문제만 보면 기존 가끔 생겼던 스토리보드 단골 오류인 연결에 무언가 버그가 생겼거니 하며 모든 연결을 끊고 다시 연결하는 등 이런저런 시도를 해보며 print 함수로 단계별로 nil인지 찍어봤다. 달라지는 건 없었고 모든 컴포넌트에 대해 nil이라는 답이 돌아왔다. 1.2 해결 방안스토리보드로 정의된 UI에 대한 뷰, 페이지에 연결하려면 그냥 코드 베이스에서 쓰던 방식대로 하면 안된다. let vc = ViewController(); self.navigationController?.pushViewControl..
[TIL / 25.03.06] 컨플릭트 지옥에 갇히게 되,,, (feat. project.pbxproj)
·
Git, Github
어제까지만 해도 서로 맞지 않는 Main.storyboard에 대한 Conflict를 해결하느라 땀 좀 뺐는데,,저거 말고도 사실 꾸준히 괴롭혀오는 파일이 있음,, project.pbxproj라는 파일인데 project.pbxproj란?- Xcode를 켜고 프로젝트를 열면 좌측 네비게이터를 보면 파일들이 유저가 만든대로 정리가 되어있다. 이 파일들을 누르면 해당 파일의 내용을 에디터로 수정할 수 있게 해주는데, 이는 해당 파일(project.pbxproj)이 프로젝트의 모든 구조적 정보를 저장해놓는 데이터베이스 역할을 하기 때문이다. 파일 참조 관리, 빌드 설정, 단계, 그룹 구조, 의존성 관리 등 전반적인 중요한 설정에 관한 정보가 담겨있다. 이 파일이 Xcode 프로젝트 파일(.xcodeproj) 패..
[TIL / 25.03.05] 이미지 슬라이더 + 커스텀 인디케이터
·
iOS/Swift
1. 구현한 것 어느 팀원을 선택하면 해당 팀원의 상세 페이지를 보여주는 화면을 제작하도록 했다.해당 뷰에서 필요한 기술이 뭐가 있을지 만들기 전 생각해봤는데 1. 이미지 슬라이더 2. 그에 맞는 인디케이터 3. 칩 모양은 컬렉션뷰로 4. 화면 크기 생각해서 일부만 스크롤뷰로 구현이정도를 해야했고, 이 포스트에선 가장 애먹었던 부분인 커스텀 슬라이더와 인디케이터에 대해 다루겠다. 이미지 슬라이더 자체는 컨셉이 컬렉션뷰고 화면 꽉채우고 페이지 가능하게 해야 하는 부분이라 썩 어렵지만은 않아서 일단 패스하고, 저 상단에 인디케이터는 보통 라이브러리나 기본 제공되는 형태가 점(dot)으로 되어있기에 커스텀할 필요가 있었다. 2. 구현 내용우선 이런 커스텀 뷰 자체를 직접 만드는 능력이 아직 부족해 클로드에게 ..
[TIL / 25.02.25] 자료구조, 메모리 구조, ARC에 대해 간략하게!
·
iOS/Swift
1. 자료구조1.1 배열(Array)데이터를 순차적으로 저장하는 자료구조인덱스를 사용해 특정 요소에 접근특징 : 빠른 조회 (O(1)), 삽입/삭제 시 성능 저하(O(n)).예시var numbers = [1, 2, 3, 4, 5]numbers.append(6)print(numbers) // [1, 2, 3, 4, 5, 6] 시간 복잡도를 연관지어 보는건 처음이라 왜 O(n)이 되는지 알아봤는데 삽입 혹은 삭제 시 최악의 경우 그 갯수만큼 값을 밀어야 하거나 당겨와야하기에 O(n)이 된다고 한다. 1.2 큐(Queue)선입선출(FIFO, First In First Out) 구조.데이터를 한쪽에서 삽입하고, 반대쪽에서 제거.사용 사례: 프린터 작업 대기열, BFS 탐색.예시struct Queue { priv..
[TIL / 25.02.21] SkeletonView 적용 및 생명주기 관련 문제 해결
·
iOS/Swift
1. 오늘 진행한 작업 전체적으로 데이터가 로드되어 나오는 페이지에 대해선 스켈레톤뷰를 입히기로 결정했다. SkeletonView란 데이터가 로드 되는 등 페이지 로딩 상황에 애니메이션을 제공함으로써 사용자에게 진행되고 있음을 느끼게 해줄 수 있도록 하는 뷰다.  이를 구현하려면 SkeletonView라는 라이브러리를 설치해 사용해야 한다. 사용법을 간단히 말하자면,import SkeletonView 를 통해 스켈레톤뷰를 사용하는 모듈에 임포트해주고스켈레톤뷰를 적용하고자 하는 뷰에 사용가능하도록 설정 -> 보여주고자 하는 타이밍에 show -> 데이터 로드 완료되거나 스켈레톤 뷰를 끄고 싶을 때 hide2. 겪었던 문제와 해결 테이블뷰의 모든 요소에 스켈레톤뷰를 적용했음에도 헤더 영역에는 적용되지 않는 ..
[TIL / 25.02.17] 뷰 맨 앞으로 보내기
·
iOS/Swift
1. 오늘 진행한 작업기존 사이드메뉴를 보여주다가 왜 Safe Area까지 뻗어나가지 않는지에 대해 물어보길래, 타 어플들도 찾아보면서 어떤지 보았는데 대다수가 Safe Area 영역까지 뻗어있는 것을 확인했다. 디자인 나온대로 구현하다가 safeArea를 뚫지 않는 게 당연하다고 생각하고 있었는데, 아니었다. 결론적으로, 이 뚫려있는 사이드메뉴를 구현하면서 기존엔 홈에서만 적용되어있던 사이드메뉴를 지난 포스트에서 올렸던 탭바가 들어가는 뷰에서도 적용해보았다.  2. 겪었던 문제와 해결 2.1첫번째로 사이드메뉴가 자꾸 safeArea를 무시하지 못하는 상황이었는데, 제약조건으로도 safeAreaLayoutGuide.snp.topMargin으로 해보라는 의견도 있고 여러 의견 모두 시도해보았는데 되지 않고..
[TIL / 25.02.14] 열거형 Enum을 이용한 메뉴 구성
·
iOS/Swift
1. 오늘 진행한 작업아직 디자인이 나오지 않은 부분인데, 사이드메뉴에서 로그인이 되지 않은 게스트 상태일 때 어떻게 띄울지도 구현을 해야했다.로그인이 되지 않았다면 기존 포스트에서 나오던 기능들의 대부분을 쓸 수 없기에 테이블 뷰 내 cellForRowAt 구성도 바꿔주어야 했는데, 이 로그인 여부는 프로젝트에서 jwt를 쓰고 있기에 액세스 토큰의 존재 여부로 확인하기로 했다. 2. 겪었던 문제와 해결 로그인을 했을땐 메뉴가 네 개, 로그인을 하지 않았을땐 메뉴가 한 개인데 이를 어떻게 Delegate, DataSource 측에서 관리시켜주지? 가 가장 큰 문제였다.이런 상태에 따라서 달라지는 테이블뷰는 처음 구현해보는데 그냥 메뉴의 이름으로 구분을 할 수는 없을까? 하다가 나온 결론이 enum 타입이..
[TIL / 25.02.13] 다중 섹션 및 헤더가 포함된 사이드 메뉴 구현
·
iOS/Swift
1. 오늘 진행한 작업지난 포스트에서 사이드메뉴에 대한 토대를 마련했다면, 이번 포스트에선 그 안에 들어가는 메뉴들에 대한 UI를 구현해보았다.화면에서 보았듯, 포인트를 이렇게 잡았다. 1. 일정 UI 구조의 반복되는 컴포넌트가 두 형태를 가짐(내 블로그 같은 Label 위주의 메뉴, Developers 하단에 있는 여러 컴포넌트가 종합되어있는 카드 셀)2. 메뉴의 개수 혹은 Developers의 멤버 수가 많아질수록 전체 뷰의 높이는 더 커져야 함.3. 스크롤할 수 있어야 함. 제일 먼저 스크롤할 수 있어야 하는 부분 때문에, 상위 ScrollView를 두고 안에 컴포넌트들을 배치할까 했으나 동적 높이를 컨트롤하기엔 효율적이지 못함 -> 스크롤뷰를 상속받고 내부 요소 주입만 해주면 알아서 높이 지정이 ..