- 프로젝트 및 개발자 소개
- 개발환경 및 라이브러리
- 키워드
- 타임라인
- 화면 구조
- 실행화면
- 트러블 슈팅 및 고민
- 프로젝트 수행 중 핵심 경험
소개: 프로젝트를 진행할 때 활용할 수 있는 iPad
전용 ToDoList 앱입니다.
프로젝트 기간 : 2023-01-09 ~ 2023-01-30
리뷰어 : 라이언 @ryan-son
![SwiftLint](https://camo.githubusercontent.com/3fc1c8d7f66084eccedf9633b5e8c1db23d528438e4364a19795aeb5aefe3979/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53776966744c696e742d53776966744c696e742d67)
STEP 1 - [23.01.09 ~ 23.01.11]
- Project 적용기술 채택
- SwiftLint 적용
STEP 2 - [23.01.12 ~ 23.01.20]
- List View 구현
- List ViewModel 구현
- Custom Cell 구현
- Custom Table HeaderView 구현
- Context Menu 구현
STEP 3 - [23.01.24 ~ 23.01.30]
- CoreData 구현
- 수정기록을 확인할 수 있는 기능 구현
- 코드 리팩토링
![](https://camo.githubusercontent.com/9d3ed747c03714962bed56cb629b9460e2c37155e1a2aac9cc153f96e4767f47/68747470733a2f2f692e696d6775722e636f6d2f367971555448532e706e67)
메인 화면 |
![](https://camo.githubusercontent.com/b89850b19a09ee3766e792f75ef3b765d0a0d662637fd838e7c94419ce2212d9/68747470733a2f2f692e696d6775722e636f6d2f396556746d4e732e706e67) |
추가, 수정 화면 |
![](https://camo.githubusercontent.com/db96f7df7120ab3b979fcba74481e4079948e3438a3d4316a42b38b7034446e7/68747470733a2f2f692e696d6775722e636f6d2f59767a466e5a542e706e67) |
수정내용 확인 화면 |
![](https://camo.githubusercontent.com/5ccc65c7aa6737c0ecbffa41a50a9172ec222f92c9c8f48bc7b5fe4328e42611/68747470733a2f2f692e696d6775722e636f6d2f77474a544575682e706e67) |
- 외부라이브러리 없이 구현해야하는 상황에서 Binding을 어떤식으로 진행해야할지 고민이 들었습니다.
- 클로저, 노티피케이션 등등 여러 방법이 있지만 클로저를 통해서 저장되는 값이 변경될 때 로직을 수행하도록 구현했습니다.
- 현재의 List ViewModel은 1개를 이용하고 있습니다.
- 1개의 ViewModel안에 3개의 Ovservable한 model 3개를 사용하여 구현을 했습니다.
- ViewModel과 View가 1:3의 구조를 가지도록 구현을 했습니다.
- 하나의 ViewModel에서 데이터를 관리하니 사용측면에서는 편리했습니다.
- 하지만 이렇게 구현하게 되니 각각의 ViewController에서 필요한 데이터를 요청할 때 ViewModel에서 계속 분기처리를 해줘야 하는 번거로움이 생겼습니다.
- 또한 ViewModel이 Cell의 데이터도 담당하고 있게 되었습니다.
- ViewModel을 조금 더 효율적으로 설계할 수 있는 방법을 고민해 봐야할 것 같습니다.
- MVVM 아키텍처 구현
- 클로저를 이용한 Observable한 모델 구현
- Date Picker를 통한 날짜 입력
- Swipe Action을 통한 삭제 구현
- CoreData를 통한 데이터 CRUD 구현
- PopoverView에 대한 이해와 활용
- Context Menu에 대한 이해와 활용