[TIL / 25.03.12] Alamofire Interceptor에 관한 문제 해결
·
iOS/Swift
1. 겪었던 문제메서드마다 interceptor 인스턴스를 넣어주면서 토큰 관련 인증을 알아서 하도록 설정을 해두었는데, 이상하게 토큰 관련 에러가 지속됐다. (토큰이 만료되었습니다.........)Task { do { let response = try await AF.request(AuthRouter.refreshToken(refreshRequest)) .serializingDecodable(AuthTokenResponse.self) .value // 새로운 토큰 저장 KeychainHelper.shared...
[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.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.03.04] 팀원분들을 위한 Git, Github 튜토리얼
·
Git, Github
1. GitGit이란 컴퓨터 파일의 변경 사항을 추적하고 파일들의 작업을 조율하는 분산 버전 관리 시스템입니다.변경 관리, 브랜치, 머지 등 다양한 기능을 제공하여 소스 코드를 관리하는 데에 주로 사용됩니다. 2. GithubGithub는 Git 저장소를 호스팅하는 클라우드 서비스를 말합니다.Pull Request, Issue, Projects 등 협업 기능을 제공하고, 이 깃허브를 통해 코드 리뷰 및 문서화 기능을 이용할 수 있습니다. 3. 자주 쓰는 용어Repository 레포지토리: 저장소로, 프로젝트 파일과 해당 파일의 변경 이력이 저장되는 곳이다.로컬 저장소, 원격 저장소 두 종류가 있다.Commit 커밋: 파일 또는 디렉토리의 변경 사항을 로컬 저장소에 기록한다. 커밋은 변경 내용, 작성자, ..
[TIL / 25.03.03] 소개팀 프로젝트 개발 시작 및 리뷰
·
내일배움캠프
2월 동안 진행된 사전캠프 기간이 끝나고 오늘부터 본캠프 기간에 들어왔다. 맨 처음 OT가 진행되고 팀 편성 및 팀 프로젝트를 시작했는데, 우리 팀을 소개하는 어플을 제작하게 되었다.팀에서는 조장을 맡게 되었는데 다들 열심히 해주셔서 부담이 많이 줄었고 너무 좋았던게, 팀원분들의 시너지가 정말 좋다. 스타터 반이라 다들 iOS 개발엔 초심자인 입장이지만, 두 분 중 한 분은 정말 아이디어 뱅크라 다채로운 기획이 가능해졌고 그 기획에 있어 나는 조금 신중히 전후 시나리오를 생각하며 조심스럽게 다듬고 고민할 때 다른 한 분께서 그 고민을 빠르게 끝내도록 도움을 주셨다.기획적으로 일정상 2일 정도를 잡은 것 같은데, 사실상 모든 기획이 7시간만에 이루어지고 와이어프레임까지 완성되었다. 소개팀우선 우리 팀을 소..
[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으로 해보라는 의견도 있고 여러 의견 모두 시도해보았는데 되지 않고..