CH 08. 코로나 현황판 앱 만들기
기능 상세:
- 시도별 신규 확진자 수가 파이 차트로 표시
- 도시 항목을 선택하면 상세 현황을 볼 수 있는 화면으로 이동
활용 기술:
- 굿바이 코로나 19 API
- https://api.corona-19.kr -> 메일 작성 -> 키 발급
- Alamofire
- Swift 기반의 HTTP 네트워킹 라이브러리
- URLSession 기반한 라이브러리
- 네트워킹 작업을 단순화하고 네트워킹을 위한 다양한 메소드와 json 파싱등을 제공
- 주요특징
- 연결가능한 request, response 메소드를 제공
- url, json 형태의 파라미터 인코딩 지원
- 파일 데이터 스트림, 멀티파트 폼 데이터 등 업로드 기능 제공
- http response 검증과 광범위한 단일 테스트 및 통합 테스트 보장
- URLSession 대신 Alamofire을 사용하는 이유
- 코드의 간소화, 가독성
- 여러 기능을 직접 구축하지 않아도 쉽게 사용
- Cocoapods
- iOS 및 MacOS, TVOS 등 애플 플랫폼에서 개발을 할 때 외부 라이브러리를 관리하기 싶도록 도와주는 의존성 관리 도구
- 설치방법
- Terminal 접속
- sudo gem install cocoapods
- Xcode에서 프로젝트생성
- Terminal에서 생성한 프로젝트 경로로 이동
- pod init
- 프로젝트 경로에 Podfile 생성완료
- Podfile 수정(외부 라이브러리를 프로젝트에 추가)
- pod install
- xcworkspace 확장자를 가진 프로젝트 실행
에러:
Escaping closure captures non-escaping parameter ‘completionHandler’
- Escaping closure
- 함수의 인자로 클로져가 전달되지만 함수가 반환된 후에도 실행
- 비동기 작업을 하는 경우 completion handler로 사용(네트워킹 통신)
- 서버에서 데이터를 언제 응답해줄 지 모르기 때문에
Ex) responseData 함수에서 정의한 completion handler closure는 fetchCoivdOverview 함수가 반환 된 이후에 호출
escaping clousre로 completion handler를 정의하지 않는다면 서버에서 비동기로 데이터를 응답받기 전 즉, responseData 메소드 파라미터에 정의한 completion handler closure가 호출되기 전에 함수가 종료돼서 서버의 응답을 받아도 fetchCoivdOverview 함수에 정의한 completion handler가 호출 되지 않음
추가할 기술:
- 막대 그래프 변경
- 지도 이미지 변경