소개 : 개인 스케줄을 등록하고 관리하는 앱입니다.
프로젝트 기간 : 2022.01.8 ~ 2022.01.13
우롱차 |
---|
애플 개발자 계정이 없어 OAuth를 통해 회원가입 불가 및 노티피케이션 알림 불가능.
facebook email: [email protected] password: testpassword
메인 화면 | 리스트 화면 | 상세 화면 |
---|---|---|
- Entry: AppDelegate과 SceneDelegate이 있습니다.
- Model: 네트워킹, 파이어베이스에 사용되는 모델입니다.
- Network: FierBase의 CRUD 로직과 Kakao, Facebook 계정연동시 필요한 로직을 포합합니다.
- Domain: 화면 별 구현사항을 포함합니다.
- Extension: 커스텀한 Extension의 집합입니다.
- Error: 정의된 에러타입이 있습니다.
- Utility: 정의된 Observable이 있습니다.
내부 로직이 혼잡해지는 것을 방지하고자 로직의 흐름을 input과 output 처럼 단방향으로 제한했습니다. 이러한 형태를 ViewModelAble로 추상화하였습니다. ViewController에서 추상화 된 ViewModelAble로 ViewModel의 Newtork객체 모두 의존성주입 형태로 초기화하며 이러한 구조는 테스트 코드 작성에도 용이합니다.
Firebase의 저장구조는 Key: Value 형태로 저장이 됩니다. 사용자로부터 카카오톡이나 페이스북에서 고유한 ID를 가져온뒤 이에 할당하는 UserID를 새로 발급해주었습니다. 이 아이디를 key 값으로 데이터를 저장합니다. 물론 저장되는 데이터도 고유한 UserId를 가집니다.이를 트리로 나타내면 다음과 같습니다.
파이어 베이스의 데이터를 조회하는 경로를 protocol로 정의하고 원하는 데이터의 경로에 따라 다르게 조회할수 있게끔 구현하였습니다.
Observable을 사용하여 데이터에 따라 뷰가 알맞게 변경되게끔 구현하였습니다.