alamofire을 이용해서 get을 보내는 방식은 그냥 따로 method를 써줄 필요없고 바로 url만 적어주면 되서 살짝 헷갈렸다
데이터 파싱해서 데이터 리스트에 넣어주는 부분
데이터가 어떻게 이루어져 있는지 구분하기 힘들었다 → 배열로 되어있어서 처음에는 헷갈렸음
데이터를 Post로 보낼때 데이터들을 String, Boolean, Int등을 넣어야 하는데 어떻게 넣어야 할까?
→ 해결방법: [String: Any]를 사용한다!!!! → ㅋ,,,안된다
→ 해결방법2: struct 변수명: Encodable을 이용한다

할일 추가를 해서 데이터를 추가했다면 데이터 추가했음을 mainViewController에 알리고 tableView의 데이터 리스트에 데이터를 추가해줘야 한다
→ 해결방법: 클로져로 이벤트를 알려주는 방식으로 진행한다
Post로 할일 목록을 추가하는 부분이 확인을 해보니까 multipartform이어서 그걸로 post를 보낼려고 검색을 해서 multiPartformData로 데이터를 보내는데 데이터가 보내지기는 하는데 response의 데이터가 전부 nilㅠㅠ왜 이러는 걸까,,?
→ multipartFormData는 주로 파일 업로드를 주로 할 때 쓰인다 그러니까 지금 내가 post로 보낼 때는multiplatForm으로 보내면 안된다
→ 즉, 안된이유는 보내는 부분의 형식과 받는 부분의 형식이 달라서이다
→ 받는 부분은 form 데이터 형식으로 받고 있지만 보내는 부분에서 계속 multipart-form을 사용하고 있어서 그런 것
→ 그리고 success로 찍히고 있지만 debugPring(response)를 이용해서 response 자체가 어떻게 들어오고 있는지 확인할 수 있다!!!
→ post하고 form데이터로 보내면 된다
router할 때 url이 공통적인 부분도 있고 전부다 다른 부분도 있는데 그건 어떻게 할까

특정 페이지를 통해서 가지고 오기 위해서는 query params를 통해서 가지고 와야하는데 ?가 %3이런식으로 표현이 되었다
이유url string을 퍼센트 인코딩을 해야 하기 때문이다
즉, swift가 url을 제대로 인코딩을 어떻게 해야하는지 몰랐기 때문에
→ String을 addingPercentEncoding을 통해서 url형식에 맞도록 변경해줘야 한다
BASE_URL 뒤에 endPoint를 붙임(string.appending)
addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)로 인코딩할 수 있도록 해주기
string을 URL로 변경하기

무한스크롤 → 변수를 하나 두고 그걸 통해서 api를 불러오는 중이고 아닌지를 판단할 수 있다


선택된 할일들을 삭제해야 하는데 이게 api에 선택된 할일 전체 삭제 이런 request가 없어서 그냥 삭제를 api를 여러번 요청을 해야 하는데 그걸 어떻게 해야 할지 모르겠다

만약에 API를 호출하는 부분이 많아진다면 어떻게 해야할까??
→ 해결방법 router를 통해서 미리 API를 어떻게 호출할지 정해놓고 필요한 라우터를 호출하면 된다!

cell에 관해서 정의할께 많아지면 cellForRowAt이 길어지면 유지보수, 코드 파악이 쉽지 않다. cell에 관련된 로직을 따로 뺄 수는 없을까?


→ 해결방법 : 당연하지만 필요한 부분을 cellForRowAt에서는 호출만 하고 정의하는 부분은 다른 곳에서 하는 방법이 있다
cell을 그려줄 때 cell에 대한 데이터 정의(id, content)등에 대한 부분을 cellForRowAt에서 하지말고 cellForRowAt은 데이터만 넘겨주고 직접적인 정의는 실제 UI를 그려줄때 하는 방법이 있음

그리고 deleteCell할 때 tableView에서 데이터를 삭제해주고 reload해주는 부분은 delete를 삭제한 후에 해줘야 한다
할일이 선택되었는지를 UISwitch를 통해서 하는데 그게 viewController는 선택되었는지 아닌지 알 수 있지만 todoCell과 todoList를 가지고 있는 데이터는 알고 있지 못하다