state.viewModels = State.viewModels(
todoCount: todoCount,
memoCount: memoCount,
recordingCount: recordingCount
)
오늘은 나만의 Todo 앱 프로젝트의 마무리를 기록하려 합니다.
이번 프로젝트는 UIKit으로 시작했지만, 이후에는 SwiftUI 버전도 구현해볼 생각입니다.
마지막으로 리뷰할 화면은 설정 탭입니다.
설정 탭은 복잡한 기능을 넣지 않고, 지금까지 내가 작성한 Todo, 메모, 녹음의 갯수를 간단히 확인할 수 있도록 구성했습니다.
📡 데이터 불러오기
설정 탭에서는 사용자가 지금까지 작성한 Todo, 메모, 녹음의 개수를 각각 Firestore에서 불러와 보여주도록 구성했습니다.
구현 흐름은 다음과 같이 간단한 구조를 따릅니다.
1. viewDidLoad에서 데이터 로드 요청
viewModel.process(.loadData)
화면이 로드되면 .loadData 액션을 ViewModel로 전달합니다.
2. ViewModel이 Firestore에서 비동기 병렬로 데이터 요청
async let todoSnapshot = db.collection("Todo").document("List").getDocument()
async let memoSnapshot = db.collection("Memo").document("List").getDocument()
async let recordingSnapshot = db.collection("Recording").document("List").getDocument()
async let을 사용해 세 가지 데이터를 병렬로 요청합니다. 모두 완료되면 다음과 같이 결과를 count로 정리합니다.
process(.getDataSuccess(
todoCount: todoResponse.todo.count,
memoCount: memoResponse.memo.count,
recordingCount: recordingResponse.recording.count
))
3. 상태 업데이트 및 뷰에 반영
state.viewModels = State.viewModels(
todoCount: todoCount,
memoCount: memoCount,
recordingCount: recordingCount
)
viewModels에 값을 할당하면, Swift의 Combine을 통해 자동으로 ViewController에 바인딩되어 UI가 업데이트됩니다.
todoCount.text = "\(viewModel.state.viewModels.todoCount)"
memoCount.text = "\(viewModel.state.viewModels.memoCount)"
recordingCount.text = "\(viewModel.state.viewModels.recordingCount)"
참 쉽죠? 😎파이어스토어에서 데이터 병렬로 받아오고, Combine으로 바인딩하고, UILabel에 쓱쓱 넣으면 끝!
🧩 마무리
오늘은 간단히 앱의 설정 탭에 대해서 간단히 리뷰해보았습니다. 다음 포스팅에는 SwiftUI버전으로 다시 구현해보는 과정을
공유드릴 예정입니다.!
📌 전체 코드가 궁금하신 분들은 GitHub 저장소를 참고해주세요:
👉 🔗 GitHub 저장소 바로가기
GitHub - woolnd/UIKit_MyTodo
Contribute to woolnd/UIKit_MyTodo development by creating an account on GitHub.
github.com
앞으로도 꾸준히 기록하며 성장하는 개발자가 되기 위해 달려보겠습니다! 🚀
읽어주셔서 감사합니다 😊
'iOS 개발 > UIKit' 카테고리의 다른 글
[UIKit] Timer 기능 리뷰 (Feat. 나만의 Todo) (0) | 2025.05.16 |
---|---|
[UIKit] 녹음 기능 리뷰 (Feat. 나만의 Todo) (0) | 2025.05.12 |
[UIKit] 메모 기능 구현 리뷰 (Feat. 나만의 Todo) (1) | 2025.05.09 |
[UIKit] Todo 기능 구현 리뷰 (Feat. 나만의 Todo) (0) | 2025.05.07 |
[UIKit] Launch & Onboarding 화면 구현 리뷰 (Feat. 음성메모앱) (2) | 2025.05.05 |