날짜 formate이 제대로 이루어지지 않는다
urlSession부분 rx로 변경하기



urlSession으로 데이터를 요청하는 부분에서 제대로 응답이 왔나 확인하기 위해서 TodosRouter.fetchTodos()를 그냥 찍어봤는데 unknown context라는 오류가 발생
→ observable이 발생하는데 이 observable을 받아주는 observer가 없어서 발생한 오류(,,,확실하지 않다,,)
→ subscribe나 bind로 observable를 받아주면 사라진다

string을 date로 변환하는 부분
이거는 ISO8601DateFormatter() dateFormate형식
000000Z가 문제인데,,,, → formateOptions을 이용해서 .withInternetDateTime, .withFractionalSeconds를 추가해준다
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
생성된 날짜별로 데이터를 Grouping해서 보여줘야 한다
→ 딕셔너리를 Grouping한다
그룹핑해서 데이터를 보여주는 부분까지는 좋았지만 새로운 데이터를 받아오거나 수정해줄때 header를 일일이 찾아서 해당 header에 붙여줘야 해서 별로 효율이 좋을것 같지는 않다,,,,,
→ Cell에 header label을 넣어서 해결(하면서 고민되는 부분의 1번 확인)

바닥에 도달했을 때 fetchTodos를 한번더 불러서 데이터를 가져온 후에 footer에 있는 spinner부분을 nil처리를 해줘야 하는데 어떻게 할수 있는지 모르겠다,,,,,,,
search데이터를 했을 때 데이터가 없을 경우 에러를 잡아서 처리해줄 때 그냥 notifySearchDataNotFound(true)해주고 tableview의 backgroundView에 searchDataNotFoundView를 넣어줬더니 안되서,,, todosVM의 todoListData을 빈배열로 만들어주고 backgroundView를 넣어줌,,,,

cell에 대한 이벤트 처리
→ 즉, cell의 UI변경에 해당하는 checkBox의 체크 표시가 달라지는 UI는 cell의 변경에 해당하므로 cell이 정의된 파일에서 해야하지만 checkBox의 상태변경에 대한 데이터는 viewModel이나 viewController에서 해야한다.
urlSession의 dataTask의 completion 블록
→ 그러므로 @escaping 클로저에 해당한다

fetchTodo의 completion가 @escaping 클로저인 이유
dataTask는 fetchTodo의 실행이 종료되어도 종료되지 않는 함수
fetchTodo함수보다 urlSession에 request로 데이터를 요청하고 response를 통해서 받아오는 부분이 더 늦게 끝나서,,?
@escaping이 아닐경우 에러 발생
TodoCell의 날짜라벨(Header라벨)의 hidden
→ Label을 view로 감싸주니까 공간차지 자체가 없어짐


tableview에서 cell에 대한 처리를 UI로 하고 있었던 것이다
→ tableview는 데이터 기반으로 동작한다,,!
항상 데이터의 관점으로 바라보자!(tableView는 데이터 기반으로 동작한다)
→ UI만 변경하는 것은 cell이 reuse될 때 적용이 되지 않을 수 있어서 생각하던 것과 다르게 보여질 수 있다

날짜별로 그룹핑해서 보여주는 부분이 시간이 오래걸려서 사용성이 안좋다(시간이 오래걸림)
→ grouping을 이용하는 것이 아니라 Todo데이터에 previousDate를 저장해서 앞에 데이터 날짜와 동일한지 파악한다
