# PR 안녕하세요 제이슨! (@ehgud0670) ✨ 드디어 원격저장소와 동기화 시켜서 PR 보냅니다! 기다려주셔서 감사하고, 이번 스텝도 잘 부탁 드립니다!☺️ --- <br> ## 🥸 기능 설명 ### 1. `MongoDB Atlas`와 연동 리모트 서버인 `MongoDB Atlas`와 동기화 되는 기능을 구현했습니다. - 생성 <img src = "https://i.imgur.com/70G6zOn.gif" width=700> - 수정 <img src = "https://i.imgur.com/I4I2lhx.gif" width=700> - 삭제 <img src = "https://i.imgur.com/Ep60n4o.gif" width=700> <br> ### 2. 로컬 디스크 캐시 구현 Realm을 디스크 캐시로, 기존에 `MainHomeViewModel`에서 사용한 배열을 메모리 캐시로 사용하였습니다. ```swift private var todoList = [TaskModel]() private var doingList = [TaskModel]() private var doneList = [TaskModel]() ``` <br> ### 3. NetWork 모니터링 기능 구현 `NWPathMonitor`를 이용하여 사용자가 현재 네트워크와 연결이 되어 있는지 모니터링 해주는 `NetworkMonitor` 타입을 구현했습니다. 네트워크에 연결이 되어 있지 않을 시, `Alert`을 이용해 사용자에게 알려주는 기능도 추가했습니다. <img src = "https://i.imgur.com/rjRsR5F.png" width=700> <br> ### 4. Histroy 기능 구현 History 기능을 MVVM 구조로 만들고, `History` 디렉토리로 묶어주었습니다. <img src = "https://i.imgur.com/TiNuGw3.png" width=700> ## ⭐️ 궁금한 점 및 조언 얻고 싶은 점 ### 1. `TableView Reload` ```swift= extension MainHomeViewController: SendDelegate { func sendData<T>(_ data: T) { // 불필요한 코드 생략 let activity = viewModel.changeList(data: data) reloadTableView() } } ``` - 저번 코멘트 중에, `chageList` 메소드를 호출해주면 알아서 뷰가 업데이팅 되도록 코드가 수정되어야 할 것 같다고 한 내용을 `NotificationCenter`를 이용하여 수정했습니다. - `NotificationCenter` 는 1:N 관계 에서 많이 사용하는 방식으로 알고 있는데, 지금 제 코드에서는 뷰컨트롤러와 뷰모델이 1:1로 알림을 처리하고 있습니다. - 그렇기 때문에 옳은 방향이라는 생각이 들지 않는데.. 더 좋은 방향성이 있는지 궁금합니다😢