iOS 개발일지
0808 새싹 26회차 정리 - Clousre 본문
iOS 앱 개발자 데뷔 과정 26회차
#0. Memo
- 요청할 API의 URL이 비슷할 경우에, Clousre를 활용하자!
kakao의 검색 API를 사용할 것인데, 블로그 검색과 카페 검색을 나눠서 지원하기 때문에 URL의 뒷부분만 달라진다.
따라서 extension과 static을 활용해 baseURL을 만들고, endpoint에 따라 다른 URL을 반환하도록 했다.
그리고 Endpoint를 선택할 수 있도록 열거형을 만들고, 연산 프로퍼티와 switch를 활용해 URL을 완성시킬 수 있게 했다.
이제 준비는 끝났으니, 서버 요청 함수에 적용시켜보도록 하자.
이제는 request를 작성하는 것이 꽤 익숙해졌다.
블로그 검색 결과를 먼저 받아온 후 카페 검색 결과를 받아오기 위해 searchCafe는 searchBlog 내에서 호출했다.
그리고 searchCafe에서 최종적으로 tableView를 reload하면 한꺼번에 갱신할 수 있다.
- 얼럿의 내용은 동일한데 핸들러만 바꾸고 싶을 때, Closure를 활용하자!
얼핏 보면 우리가 잘 아는 얼럿의 구현 형태 같지만, 자세히 보면 okAction의 타입으로 @escaping 클로저가 들어가있다.
그리고 ok 상수의 handler에 okAction이 들어있으므로, 함수 밖에서 handler를 정의해 줄 수 있다.
- replacingOccurrences : 특정 문자열 치환하기
해당 메서드는 문자열을 다른 문자열로 치환해주는 기능을 한다.
예를 들어 서버에서 응답해주는 값에 필요 없는 문자열이 같이 온다든가...
사용 방법은 예시 코드만 봐도 될 정도로 매우 간단하니 따로 설명하지는 않겠다.
#1. Checklist
- TableView AutomaticDimension
컨텐츠 양에 따라서 셀 높이가 자유롭게 움직인다.
* 조건1 : 레이블 numberOfLines 0
* 조건2 : tableView Height automaticDimension
* 조건3 : 레이아웃이 명확하게 잡혀있어야 한다.
여기서 조금 더 나아가면 네비게이션 바 버튼을 눌렀을 때 셀의 높이가 달라지도록, 즉 '더보기' 를 만들 수 있다.
#2. Assignment
- 과제 복습 & 도전 과제 진행하기
오늘은 오랜만에 쉬어가는 느낌으로 저번주부터 했던 서버 통신 관련 과제나 수업 내용을 복습하는 시간인 것 같다.
그래서 TMDB 프로젝트를 조금 더 보완하고, 클로저 문법에 대해 조금 더 공부해보려고 한다.
1. CastView에 overview 추가하기
오늘 배운 AutomaticDimension으로 구현하고 싶었지만, 적용이 어려워 UIView로 직접 구현했다.
2. TMDBView 페이지네이션 보완하기
TMDB API를 그대로 가져오면 자동으로 page 1을 응답하고, 항상 20개를 전달받았었다.
때문에 lastMovieNumber = 20 를 상수로 초기화하고, 셀 갯수는 최대 20개로 제한해놓는 형태로 구현했었다.
하지만 오늘, 다음 페이지를 요청하는 방법을 알게 되어 끝까지 다 볼 수 있도록 코드를 수정해봤다.
참고로 페이지는 1000 페이지가 최대이며, 1페이지당 영화 20개가 있으므로...
기본으로 응답하는 page1만 쓰는 기존의 코드는, 20개밖에 안되는 컨텐츠를 억지로 5개씩 페이지네이션을 적용했었다.
코드를 개선해보니 훨씬 더 본래 의도에 맞으면서도 오히려 더 쉽고 직관적인 코드가 되었다.
'SeSAC iOS 데뷔과정 2기' 카테고리의 다른 글
0810 새싹 28회차 정리 - TableView/CollectionView Cell (0) | 2022.08.10 |
---|---|
0809 새싹 27회차 정리 - XIB UIView Custom Class (0) | 2022.08.10 |
0805 새싹 5주차 마무리 (0) | 2022.08.07 |
0805 새싹 25회차 정리 - Closures, DispatchQueue (0) | 2022.08.05 |
0804 새싹 24회차 정리 - Pagenation (0) | 2022.08.04 |