[UIKit] 설정 탭 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
state.viewModels = State.viewModels( todoCount: todoCount, memoCount: memoCount, recordingCount: recordingCount)오늘은 나만의 Todo 앱 프로젝트의 마무리를 기록하려 합니다.이번 프로젝트는 UIKit으로 시작했지만, 이후에는 SwiftUI 버전도 구현해볼 생각입니다. 마지막으로 리뷰할 화면은 설정 탭입니다.설정 탭은 복잡한 기능을 넣지 않고, 지금까지 내가 작성한 Todo, 메모, 녹음의 갯수를 간단히 확인할 수 있도록 구성했습니다.📡 데이터 불러오기설정 탭에서는 사용자가 지금까지 작성한 Todo, 메모, 녹음의 개수를 각각 Firestore에서 불러와 보여주도록 구성했습니다.구현 흐름은 다음과 같..
[UIKit] Timer 기능 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
오늘은 제가 직접 만든 Todo 앱에 포함된 Timer 기능을 소개하고 리뷰해보려고 해요.이번 포스팅에서는 총 세 가지 기능을 중심으로 살펴볼게요.⏱ Timer 설정 및 시작❌ Timer 취소⏸ Timer 일시정지 및 재개하나씩 자세히 확인해볼게요!⏱ Timer 설정 및 시작1. PickerView로 시간 선택원래는 UIDatePicker를 활용하려고 했지만, 초 단위까지는 지원하지 않아 원하는 정밀한 시간 설정이 어려웠습니다.그래서 사용자에게 시/분/초를 모두 직접 선택할 수 있도록 UIPickerView를 사용해 커스텀 UI를 구성했습니다.Picker는 세 개의 컴포넌트로 나눴고, 각 요소는 Array(0...59) 또는 Array(0...23)로 구현했습니다. numberOfComponents(in..
[Swift] 극한으로 빠르게 입력 받기 - 백준 시간초과 해결하는 FileIO 사용법
·
알고리즘
오늘은 백준 2075번 N번째 큰 수 문제를 풀다가최소 힙(Min Heap) 을 이용해 잘 구현했다고 생각했는데…계속 시간초과(TLE) 가 발생했습니다. 🤯 코드 로직은 분명 맞는 것 같았는데 왜 자꾸 시간초과가 뜰까?구글링을 해보니 문제는 readLine()의 속도에 있더군요. Swift의 readLine()은 편하긴 하지만,입력 데이터가 많아질 경우 굉장히 느리다는 치명적인 단점이 있습니다.특히 이 문제처럼 최대 1,500 × 1,500개의 수를 읽어야 할 땐 더 심각하죠. 그래서 이번 포스팅에서는👉 시간초과를 해결할 수 있는 빠른 입력 방식,즉 FileIO를 이용한 극한의 빠른 입력 처리 방법을 소개해보려고 합니다.📉 왜 readLine()은 느릴까?Swift에서 가장 기본적으로 사용하는 입력..
[UIKit] 녹음 기능 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
안녕하세요, 오늘은 제가 직접 만든 나만의 Todo 앱에 녹음 기능에 대해 리뷰해보려 합니다. 우리는 흔히 할 일을 텍스트로 적지만, 어떤 순간엔 글보다 말이 더 빠르고 편할 때가 있죠. 특히 이동 중이거나 급하게 아이디어가 떠올랐을 때, 간단히 마이크 버튼을 눌러 말로 기록할 수 있다면 어떨까요? 이번에 구현한 기능은 다음과 같은 흐름을 가집니다:📂 녹음 불러오기: 앱 실행 시 저장된 녹음 파일들을 자동으로 불러와 목록에 보여줍니다.🎙️ 녹음하기: 버튼을 눌러 음성을 녹음하고, 제목과 저장할 수 있도록 구성했습니다.▶️ 녹음본 재생: 녹음한 음성을 목록에서 선택하여 재생할 수 있습니다.🗑️ 녹음 삭제: 필요 없는 녹음은 리스트에서 손쉽게 삭제할 수 있도록 했습니다.이 중 녹음 불러오기 기능은 To..
[UIKit] 메모 기능 구현 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
오늘은 나만의 Todo 앱에서 메모 기능에 대해 간단히 리뷰해보려 합니다.이번 포스트에서는 메모 작성하기, 메모 상세 화면 두 가지 기능에 초점을 맞춰 소개할게요. 저번 포스트에서 다뤘던 Todo 불러오기, Todo 삭제하기, 메모 불러오기, 메모 삭제하기 기능은 로직이 거의 동일하기 때문에 이번에는 생략하겠습니다.혹시 이전 내용을 확인하고 싶다면 아래 링크를 참고해 주세요👇🔗 이전 포스트 보러 가기 [UIKit] Todo 기능 구현 리뷰 (Feat. 나만의 Todo)이번 프로젝트는 ‘나만의 Todo’라는 이름으로 진행해봤어요.앱의 로고도 직접 디자인해서 적용해보았고, UI 구성부터 기능 구현까지 차근차근 UIKit으로 만들어봤습니다. 오늘 블로그에서는 이riu-dev.tistory.com✏️ Mem..
[UIKit] Todo 기능 구현 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
이번 프로젝트는 ‘나만의 Todo’라는 이름으로 진행해봤어요.앱의 로고도 직접 디자인해서 적용해보았고, UI 구성부터 기능 구현까지 차근차근 UIKit으로 만들어봤습니다. 오늘 블로그에서는 이 앱의 핵심 기능 중 하나인 Todo 기능 구현 내용을 리뷰하려고 해요!이번에 구현한 Todo 기능은 다음과 같습니다:📥 Todo 불러오기✏️ Todo 생성🗑 Todo 삭제☑️ Todo 체크(완료 여부 토글)기능을 단순히 구현하는 데서 그치지 않고, 실제로 사용해보면서불편한 부분은 계속해서 개선해보는 방식으로 프로젝트를 이어가고 있습니다.그럼 하나씩 자세히 살펴볼게요!🔧 프로젝트 설계 및 구현 방식이번 프로젝트에서는 MVI와 MVVM 아키텍처를 조합하여 적용해보았습니다.데이터 흐름과 뷰 업데이트의 역할을 명확히..
[UIKit] Launch & Onboarding 화면 구현 리뷰 (Feat. 음성메모앱)
·
iOS 개발/UIKit
안녕하세요! 오늘부터는 패스트캠퍼스의 네카라쿠배 iOS 앱 초격차 패키지 Online 강의 중, N사 음성메모앱 파트를 UIKit으로 구현한 내용을 리뷰해보려고 합니다.🛠 강의는 SwiftUI 기반으로 진행되었지만, 저는 UIKit과 SwiftUI 모두 연습하고 싶어 UIKit으로 먼저 구현해보고, 이후에는 피그마만 참고하여 SwiftUI 버전도 따로 제작할 예정입니다!🎯구현 목표오늘은 앱 시작 시 보여지는 Launch 및 온보딩 화면을 UIKit으로 어떻게 구성했는지 리뷰합니다.화면 흐름은 다음과 같습니다:앱 실행ViewController 로드타이틀/서브타이틀 세팅OnboardPageViewController 연결OnboardPageViewController는 4개의 온보딩 페이지 준비사용자는 스와..
[Combine] Operator Guide
·
iOS 개발/Combine
Operator Guide저번 글에서는 Combine의 Operator가 무엇인지, 어떤 역할을 하는지 간단히 살펴봤습니다.이번 글에서는 그 연장선으로, 자주 사용되는 오퍼레이터들을 종류별로 정리해보려 합니다. Operator는 흔히 변환 연산자, 필터 연산자, 조합 연산자로 분류되지만,이 구분은 완전히 명확하게 나뉘는 구조는 아니며, 각 오퍼레이터가 여러 역할을 수행하는 경우도 많습니다.예를 들어 compactMap은 값을 변환하면서도 nil 값을 거르는 필터링 역할도 함께 합니다. 그럼, 각 분류별 주요 오퍼레이터들을 살펴보겠습니다.변환연산자Combine의 변환 연산자는 Publisher에서 방출된 값을 다른 값으로 바꾸는 역할을 합니다.입력된 스트림 데이터를 원하는 형식으로 가공하거나, 비동기 작업..
[Combine] Operator, Scheduler
·
iOS 개발/Combine
값을 변형하고 전달하는 Operator지금까지 Combine의 핵심 요소인 Publisher와 Subscriber에 대해 알아보았습니다.이제 그 둘 사이에서 값을 가공하고 흐름을 제어하는 중간 단계,바로 Operator에 대해 살펴볼 차례입니다. Operator의 기본 정의Operator는 Publisher가 전달한 값을변형(transform)하거나 필터링(filter) 한 후,그 결과를 Subscriber에게 전달하는 중간 처리 역할을 합니다. Operator는 Combine에서 아주 유연한 존재입니다.입력(Input), 출력(Output), 실패 타입(Failure) 을 각각 다르게 가질 수 있고, 앞단 Publisher의 값을 받아 Subscriber처럼 동작하며, 동시에 그 값을 가공해 다음 Su..
[Combine] 데이터를 처리하는 Subscriber
·
iOS 개발/Combine
데이터를 처리하는 Subscriber이전 글에서는 Combine의 세 가지 핵심 요소 중 첫 번째, Publisher에 대해 다뤘습니다.오늘은 두 번째 요소인 Subscriber에 대해 이야기해보려고 합니다. Apple 공식 문서에서는 Subcriber를 다음과 같이 설명합니다:A protocol that declares a type that can receive input from a publisher.(Publisher로부터 입력을 받을 수 있는 타입을 선언하는 프로토콜) Publisher가 데이터를 생성하고 방출하는 주체라면,Subscriber는 Publisher가 내보낸 데이터를 받아서 소비하고 처리하는 주체입니다. 이번 글에서는 Subscriber를 중심으로,Subscription의 개념과 Pu..