내일배움캠프 3, 5주차 프로젝트 - TodoApp 만들기
할 일을 생성하고 관리하는 Todo App 입니다.
- MVC 디자인 패턴으로 앱을 만들었습니다.
- 데이터 일관성을 유지하기 위해 UserDefaults 를 활용해서 Create, Read, Update, Delete 기능을 구현했습니다.
- TableView 의 Section 을 카테고리 별로 나누고, header의 Title을 통해 Section을 구분할 수 있도록 했습니다.
- 시작 화면에서 이미지의 URL을 통해 이미지를 불러오는 기능을 구현했습니다.
![myTodoAppScene](https://private-user-images.githubusercontent.com/119715960/265191063-f972c6e1-390b-4f5b-861b-998fd428dde8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MjU1MTIsIm5iZiI6MTcyMDYyNTIxMiwicGF0aCI6Ii8xMTk3MTU5NjAvMjY1MTkxMDYzLWY5NzJjNmUxLTM5MGItNGY1Yi04NjFiLTk5OGZkNDI4ZGRlOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcxMFQxNTI2NTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05NzY3NzFiZTA5MDA3Zjk1NTJlMjA2YzgyMmE1Y2VkZGE0ODMzNjJlNWUzZmRlYWJiYjIxOWI3MGVkZmYzMTNkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.i0qpM17f0lUTjQUrDGoPdTOHyYyu5mAYTY8TnpPKNPA)
디자인 패턴은 MVC(Model-View-Controller)패턴을 적용했습니다.
Todo
데이터 모델을 만들고, Todo
데이터를 관리하기 위한 TodoDataManager
를 만들었습니다. TodoDataManager
는 싱글톤 패턴으로 구현해서 하나의 TodoDataManager
인스턴스에 모든 Controller
가 접근하도록 구현했습니다.
그리고 데이터의 일관성을 유지하기 위해 TodoDataManager
에서 UserDefautls
에 접근해서, 데이터를 "TodoList" 라는 키값을 사용해서 저장하고 저장한 데이터를 불러오도록 구현했습니다.
각각의 Controller
는 TodoDataManager
에게 데이터를 전달받고, 해당 데이터를 스토리보드로 구성된 각각의 Scene(View)
에 전달해서 데이터를 세팅합니다.
1. Update 구현 후 할 일을 완료함을 체크했을 때, 완료한 일에 완료한 할 일을 조회할 수 있도록 구현
2. Update 구현 후 할 일을 수정하고 수정된 데이터가 적용될 수 있도록 구현
3. DetailTodoScene에서 취소 버튼을 눌렀을 때, 시작화면으로 전환되는 것 수정 필요