Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

iOS 개발일지

0808 새싹 26회차 정리 - Clousre 본문

SeSAC iOS 데뷔과정 2기

0808 새싹 26회차 정리 - Clousre

Lia's iOS 2022. 8. 8. 18:51
iOS 앱 개발자 데뷔 과정 26회차

 

 

 

 

#0. Memo

- 요청할 API의 URL이 비슷할 경우에, Clousre를 활용하자!

kakao의 검색 API를 사용할 것인데, 블로그 검색과 카페 검색을 나눠서 지원하기 때문에 URL의 뒷부분만 달라진다.

따라서 extension과 static을 활용해 baseURL을 만들고, endpoint에 따라 다른 URL을 반환하도록 했다.

(Endpoint 파일 내) makeEndPointString 함수

 

그리고 Endpoint를 선택할 수 있도록 열거형을 만들고, 연산 프로퍼티와 switch를 활용해 URL을 완성시킬 수 있게 했다.

(URL + Extension 파일 내) Enum Endpoint

 

이제 준비는 끝났으니, 서버 요청 함수에 적용시켜보도록 하자.

(KakaoAPIManager 파일 내) Class KakaoAPIManager

이제는 request를 작성하는 것이 꽤 익숙해졌다.

(ViewController 파일 내) searchBlog() 와 searchCafe()

블로그 검색 결과를 먼저 받아온 후 카페 검색 결과를 받아오기 위해 searchCafe는 searchBlog 내에서 호출했다.

그리고 searchCafe에서 최종적으로 tableView를 reload하면 한꺼번에 갱신할 수 있다.

 

 

 

- 얼럿의 내용은 동일한데 핸들러만 바꾸고 싶을 때, Closure를 활용하자!

얼럿을 띄우기 위한 토대가 되는 showAlert 함수를 extension을 활용해 만들었다.

 얼핏 보면 우리가 잘 아는 얼럿의 구현 형태 같지만, 자세히 보면 okAction의 타입으로 @escaping 클로저가 들어가있다.

그리고 ok 상수의 handler에 okAction이 들어있으므로, 함수 밖에서 handler를 정의해 줄 수 있다.

okAction의 구현

 

 

 

- replacingOccurrences : 특정 문자열 치환하기

해당 메서드는 문자열을 다른 문자열로 치환해주는 기능을 한다.

예를 들어 서버에서 응답해주는 값에 필요 없는 문자열이 같이 온다든가...

replacingOccurrences 사용 예시

사용 방법은 예시 코드만 봐도 될 정도로 매우 간단하니 따로 설명하지는 않겠다.

 

 

 

 

#1. Checklist

- TableView AutomaticDimension

컨텐츠 양에 따라서 셀 높이가 자유롭게 움직인다.

 *  조건1 : 레이블 numberOfLines 0

 *  조건2 : tableView Height automaticDimension

 *  조건3 : 레이아웃이 명확하게 잡혀있어야 한다.

 

여기서 조금 더 나아가면 네비게이션 바 버튼을 눌렀을 때 셀의 높이가 달라지도록, 즉 '더보기' 를 만들 수 있다.

(class 상단) 변수 초기화
(cellForRowAt 메서드 내) numberOfLines 변경

 

 

 

 

#2. Assignment

- 과제 복습 & 도전 과제 진행하기

오늘은 오랜만에 쉬어가는 느낌으로 저번주부터 했던 서버 통신 관련 과제나 수업 내용을 복습하는 시간인 것 같다.

그래서 TMDB 프로젝트를 조금 더 보완하고, 클로저 문법에 대해 조금 더 공부해보려고 한다.

 

1. CastView에 overview 추가하기

오늘 배운 AutomaticDimension으로 구현하고 싶었지만, 적용이 어려워 UIView로 직접 구현했다.

overview 추가 전(좌), 결과물(우)

 

 

 

2. TMDBView 페이지네이션 보완하기

TMDB API를 그대로 가져오면 자동으로 page 1을 응답하고, 항상 20개를 전달받았었다.

때문에 lastMovieNumber = 20 를 상수로 초기화하고, 셀 갯수는 최대 20개로 제한해놓는 형태로 구현했었다.

하지만 오늘, 다음 페이지를 요청하는 방법을 알게 되어 끝까지 다 볼 수 있도록 코드를 수정해봤다.

참고로 페이지는 1000 페이지가 최대이며, 1페이지당 영화 20개가 있으므로...

보완 완료!

기본으로 응답하는 page1만 쓰는 기존의 코드는, 20개밖에 안되는 컨텐츠를 억지로 5개씩 페이지네이션을 적용했었다.

코드를 개선해보니 훨씬 더 본래 의도에 맞으면서도 오히려 더 쉽고 직관적인 코드가 되었다.