AFNetworking 3.0 사용하기 [openweathermap을 사용하여 현재 날씨 가져오기]- 1

개발을 하면서 하나의 프로젝트를 하는데 아무리 단순한 앱이여도 안에 들어가보면 많은 기능들이 들어가있다. 그 기능들을 다 하나하나 손으로 만들면 최적화나 개발능력에 큰 도움이 되겠지만 시간이 그걸 허락해주지 않을때가 많다 보니 나는 오픈 소스를 사용하는것을 좋아한다. 그중에 iOS/OSX 앱을 만들때 네트워크 관련기능을 쓰게 되면서 세션, 에러, 다운로드, 진행상황 등등….처리해야할게 많은데 이럴때AFNetworking을 짠 하고 사용하면 http 통신 관련은 다 해결된다고 보면 된다. 최근에 AFNetworking가 2.x에서 3.x로 바뀌면서 실행이 안되거나 디플리케이티드 된 기능들도 많아서 해당 포스팅은 3.0을 기준으로 작성한다.

AFNetworking 깃헙 주소 – https://github.com/AFNetworking/AFNetworking

AFNetworking 2.x->3.x 마이그레이션 가이드 주소 – https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-3.0-Migration-Guide

 

podfile

 

간단하게 빈 프로젝트를 만들고 코코아팟을 사용하여 AFNetworking을 셋팅해본다. 만약 코코아팟 사용법을 모른다면 아래 포스팅을 참고하여 설정해본다.

http://a.lotco.de/?p=49

보통 AFNetworking을 사용할때는 파일 다운로드나 restful을 사용할때 많이 사용한다. get/post 방식을 이용하여 데이터를 가져올때이다. 간단하게 get 형식을 통해 json형식의 데이터를 받아오는 예제를 작성해보겠다. 먼저 사용할 프레임워크를 추가해준다.

그리고 UI를 따로 만들기 귀찮으니 viewDidLoad 시점에서 리퀘스트를 요청해보겠다.

여기서 중요한건 기존 2.x 버젼에 사용하던 GET:parameters:success:failure:는 디플리케이티드 되었다. 3.x 버전부터는 GET:parameters:progress:success:failure: 을 사용하여야 한다. 중간에 progress 파라미터가 추가되어서 파일 다운로드나 다른 작업을 할때 굳이 델리게이트나 노티피케이션 설정을 안하고도 블록문으로 리퀘스트의 진행 상황을 바로 파악할 수 있게 되었다.

기존 값으로는 parameters에는 파라미터가 들어간다….개그가 아니라 설명을 잘 못하겠다… 리퀘스트 쿼리를 날리면서 요청할 값들에 대하여 값들을 집어 넣고 그 밑에는 success블록과 failure블록이 있다. 딱 그대로 리퀘스트가 성공했을때와 실패했을때를 구분하여 실행된다. 실패 할 경우에는 서버가 응답하지 않을때, 리퀘스트 요청 시간이 초과하였을때, 앱이 네트워크를 사용 할 수 없을때 등이 있다.

 

설정이 끝나고 빌드를 해보면 콘솔에 다음과 같은 결과를 얻을 수 있다.

아씨….iOS 9 부터 추가된 기능으로 앱에 http 요청을 하려면 따로 설정을 해주어야만 한다. 프로젝트 안에 Info.plist항목을 우측버튼으로 누르면 메뉴가 나온다 거기서 Open As->Source Code를 누르면 info.plist의 소스가 보인다. 옆의 메뉴에서 하나씩 속성을 추가해도 되는데 귀찮다. 하단에 있는 코드를 제일 하단에 </dict>전에 입력한다.

스크린샷 2016-01-20 오후 7.03.53

스크린샷 2016-01-20 오후 7.08.47

 

그리고 빌드를 하면 에러없이 빌드가 짠! 하고 된다! 콘솔창에는 오늘의 서울 예보가 json형식으로 짠 하고 나올것이다. 이제 받은 데이터를 이용해 열심히 개발을 하면된다.

스크린샷 2016-01-20 오후 7.10.37

 

예제 다운로드

 

 

 

One thought on “AFNetworking 3.0 사용하기 [openweathermap을 사용하여 현재 날씨 가져오기]- 1

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.