-
[iOS] Alamofire를 통해 CocoaPods 사용해보기: 이것으로 CocoaPods 끝!iOS 2018. 11. 13. 19:58
CocoaPods
CocoaPods 이 뭔데?
- CocoaPods 을 제일 잘 설명해 놓은 것은 공식 홈페이지다. 요기
- 해석하면 코코아( Swift, Objective-c ) 환경에서의 의존성 관리자 인 것.
- 코코아 환경의 수 많은 라이브러리들이 CocoaPods 으로 관리되고 그러하므로 사용하기 매우 편리하다.
그러면 의존성 관리자가 뭔데? ( dependency manager )- 의존성 관리자는 앱에서 사용되는 서드파티 의존성들을 추가하고, 삭제하고, 업데이트 하는 모든 관리를 쉽게 해주는 것입니다.
- 예를 들어, 앱에서 네트워크 관련 여러가지 일을 수행하는데 수월하게 만들려고, 스스로 클래스나 구조체를 만들어서 쓴다고 하면?
- 시간도 오래 걸리지만 한번에 완벽한 오류없이 만들 가능성도 적기 때문에 위험부담이 큽니다. 이럴 때 이미 만들어져서 많은 사람들이 쓰고 검증된 라이브러리를 사용하는 것입니다. 이 경우에는 iOS 에서 네트워크 관리 라이브러리로 검증된 'Alamofire' 라는 라이브러리를 사용하면 됩니다.
- 이 Alamofire 라이브러리를 의존성 관리자인 'CocoaPods' 을 사용해서 적용하려는 Xcode 프로젝트에 적용시키는 것
CocoaPods 설치하기( 응용프로그램 에서 '기타' 에 터미널 있습니다. )
- 맥에서 터미널을 실행시켜서 아래와 같은 명령을 하면 맥의 패스워드를 입력하라고 나옵니다.
sudo gem install cocoapods- 1 gem installed 라고 나오면 아래와 같이 입력합니다. 그러면 설치가 완료됩니다.
pod setup예제 프로젝트
예제 프로젝트 <--다운로드 받으쎼여
- 예제는 Joshua greene 님의 프로젝트 임을 밝힙니다. 저와는 아무런 관련이 없습니다.
- 아래의 설명들은 Joshua greene님의 프로젝트를 통해서 제가 여러가지 설명과 그림을 추가한 것입니다.
- ICreamShop 은 아이스크림 가게 사장님이 손님이 너무 많아서 감당할 수 없게 되자 iOS 개발자를 채용해서 앱을 통해 아이스크림을 주문할 수 있게 한다는 스토리 입니다.
- 아래 그림은 메인 스토리보드 구성과, 앱을 완성했을 때의 모습입니다.
메인 스토리보드 구성
만들려고 하는 것 : 목표
- 이렇게 여러가지 맛을 선택할 수 있게 할 때 맛의 종류를 네트워크를 통해 받아올 예정입니다.
- 이를 위해 URLSession 을 사용해서 직접 네트워크를 불러와도 되지만 복잡한 과정들을 계속 반복하게 됩니다.
- 하지만 위에서 소개했던 Alamofire 라는 라이브러리를 사용하면 이러한 반복수행되는 과정들을 메소드로 만들어 놓아서
- 메소드를 호출하는 과정으로 쉽게 네트워크에서 데이터를 받을 수 있습니다.
Alamofire 라이브러리를 IceCream 프로젝트에 적용시키기
1. podfile 만들기
- 먼저 다운로드 받은 프로젝트 경로를 확인합니다.
- 프로젝트를 클릭한 후
인스펙터 영역을 보시면 ( XCode 오른쪽 영역 ) 아래와 같이 Full Path 가 나옵니다.
- 이제 터미널을 열고 아래와 같이 입력합니다.
cd /Users/changsicjung/Downloads/IceCreamShop
- cd는 뒤에 올 경로의 파일로 이동하는 것을 의미합니다. 위와 같이 입력하면 현재시점이 IceCreamShop 폴더에 있는 것이죠.
- 그리고 터미널에 아래와 같이 입력합니다.
pod init- 현재 시점에 있는 위치에 pod 파일을 생성하라는 의미입니다.
- 이제 IceCreamShop 폴더에 가면 아래처럼 pod 파일이 생성된 것을 볼 수 있습니다.
- 이 pod 파일을 XCode 로 실행시킵니다.
- 오른쪽 클릭 해서 다음으로 열기
- Xcode 선택
※ 터미널에서 아래와 같이 입력해도 Xcode 로 열 수 있지만, 터미널 용어를 모르는 상태에서 쓰는걸 지양하므로 위의 방법으로 설명한 것!
open -a Xcode podfile
2. podfile 에 Alamofire 적용시키기
- podfile 을 Xcode 로 열면 아래와 같습니다. 기본값 이에요.
- 여기에서 지울것들 다 지우고 아래와 같이 use_frameworks! 까지 남기고 그 아래에
- 적용하고자 하는 라이브러리 이름과 버전 정보를 입력합니다. 아래와 같이요!
- 이제 podfile 을 저장한 후 터미널을 열어서 아래와 같은 실행명령을 내려줍시다. (이 글을 쓰는 시점에서 최신 버전이 4.7.3 이네요~)
pod install※ 이는 지금까지 위의 순서대로 따라와서 현재시점이 podfile 이 있는 IceCreamShop 폴더일 때 입니다. 혹시 터미널을 종료했다가 다시 실행했다면 cd 명령어를 이용해서 IceCreamShop 폴더의 위치까지 이동한 후 'pod install' 명령어를 수행하기 바랍니다.
- 아래와 같이 나오면서 Alamofire 라이브러리가 IceCreamShop 프로젝트에 적용이 완료됩니다.
- 이제 IceCreamShop 폴더를 들어가 보면 아래와 같이 workspace 라는 것이 생깁니다.
- 기존의 프로젝트( 파란색 ) 은 이제 사용하지 않고 workspace 로 새로 생성된 프로젝트를 사용해서 Alamofire 라이브러리를 사용하면 됩니다.
3. Alamofire 의 메소드를 사용해서 프로젝트 완성시키기- workspace 를 실행시키고 IceCreamShop 폴더에서 PickFlavorViewController.swift 를 클릭합니다.
- 가장 위에 import Alamofire 를 추가해줍니다.
- 아래와 같이 TO-DO 로 비워놓았죠?
- 여기에 아래와 같은 코드를 입력하고 실행시킵니다.
1234567891011121314151617Alamofire.request( // Alamofire를 이용하여 데이터를 요청하는 메소드 request 에 접근"https://www.raywenderlich.com/downloads/Flavors.plist",method: .get,encoding: PropertyListEncoding(format: .xml, options: 0)).responsePropertyList {[weak self] response inguard let strongSelf = self else { return }guard response.result.isSuccess,let dictionaryArray = response.result.value as? [[String: String]] else {return}strongSelf.flavors = strongSelf.flavorFactory.flavors(from: dictionaryArray)strongSelf.collectionView.reloadData()strongSelf.selectFirstFlavor()}cs - Alamofire 를 통해 request 메소드에 접근해서 몇 가지 매개변수만 넣어주면 쉽게 데이터를 받아 처리할 수 있는 코드입니다.
- 이 메소드는 어디있냐 궁금하다면 아래와 같이 CocoaPods 을 통해 추가된 곳에서 찾을 수 있습니다.
※ 코드에 대한 자세한 설명을 하지 않습니다. 'Alamofire 라이브러리를 이용해서 쉽게 데이터를 처리할 수 있다' 가 이 포스팅의 목적이니까요!
정리
- 위의 예제에서 Alamofire 을 이용하지 않고 네트워크를 통해 데이터를 받아서 처리한다면 코드의 양이 상당히 증가하고, 그 관계도 복잡해집니다.
- 이렇게 불편하다고 몇번 사용하지도 않을 것들을 그때그때 라이브러리로 만들어 써도 되지만 매우 비효율적입니다.
- 어찌 저찌 해서 좋은 라이브러리를 찾았다고 해도 기존의 프로젝트에 적용하려면 해야할 것들이 너무 많습니다.
- 이러한 과정을 CocoaPods 이 자동으로 해주고 버전까지 관리해줍니다. 베리굿 ^^
실행결과 ( 아이폰 X 기준 )
'iOS' 카테고리의 다른 글
[iOS : Codable]중첩된 JSON 데이터를 원하는 부분만 Codable 을 활용해서 가져오기! (0) 2019.06.19 [iOS] Codable 프로토콜로 JSON 데이터 다루기 정리! (0) 2019.06.10 [iOS] 마인드맵으로 이해하는 JSON / 스위프트에서 JSON 객체 다루기 (0) 2019.06.03 [iOS] CocoaPods , Carthage 사용하기 - Dependency Manager (0) 2019.05.31 [iOS : Library]ARKit 진행중 / 작성중 (0) 2018.10.21 댓글