티스토리 뷰

본 글은 Swift 3.0 / XCode 8.3 기준으로 작성되었습니다.


아이폰 개발을 하면서 Swift로만 개발하는 것에 대해 조금? 힘든 점이 많습니다. 하나하나 모든 것들을 개발해야하는 부분에 대해서 대부분 노가다 스럽게 접근해야한다는 것인대요.(개인적인...)

우리가 웹을 개발할 때도 django에서 다양한 외부 라이브러리를 pip 로 설치하는 것과 마찬가지로 다양한 외부 라이브러리들을 XCode에서도 설치해서 사용할 수 있습니다.


cocoapod에 대한 설명은 추후에 자세히 다루도록 하고 이번에는 주파고 아이폰 개발을 하면서 주로 사용했던 라이브러리들을 정리해보려 합니다. (각 라이브러리에 대한 doc를 참조하였고, 약간 다르게 접근 할 수 있으니 항상 공식 문서를 참조하세요!)



1. Alamofire


예를 들어 API 서버로 부터 데이터를 받아와 데이터를 뿌려줘야할 때, Swift 만 사용했을 때 어떻게 접근했는지 코드로 확인해 봅시다.


override func viewDidLoad(){
    let url = "API URL"
    let apiURI : URL! = URL(string: url)
    let apidata = try! Data(contentsOf: apiURI)
    do {
        let apiDictionary = try JSONSerialization.jsonObject(with: apidata, options: []) as! NSDictionary
        // parsing from apiDictionary by encoding JSON // 
    }
}
cs


여기서 URL에 접근하여 데이터를 받아오는 부분인 apidata 부분에서 이 방식으로 접근하지 못한 여러가지 이유가 있었습니다.

(사실 다른 방법으로 가능할 수 있다고 생각은 합니다....)


header, method, parameter, encoding 등을 고려한다면 참으로 답답?한 상황이 될 것입니다. 따라서 여러가지 Restful 한 라이브러리를 찾던 도중 다음과 같은 라이브러리를 찾았습니다.



(사진을 클릭하면 새창이 열립니다.)


Features

  •  Chainable Request / Response Methods
  •  URL / JSON / plist Parameter Encoding
  •  Upload File / Data / Stream / MultipartFormData
  •  Download File using Request or Resume Data
  •  Authentication with URLCredential
  •  HTTP Response Validation
  •  Upload and Download Progress Closures with Progress
  •  cURL Command Output
  •  Dynamically Adapt and Retry Requests
  •  TLS Certificate and Public Key Pinning
  •  Network Reachability
  •  Comprehensive Unit and Integration Test Coverage
  •  Complete Documentation

깃헙에서 특징을 보아도 다양하게 지원하는 것을 확인 할 수 있습니다.

그렇다면 앞에서 API 서버로 부터 받아올 데이터를 조금 더 잘 받아오는 코드는 어떨까요?


import Alamofire

override func viewDidLoad(){
 
    let header : HTTPHeaders = ["Authorization":"12345abcdef"]
 
    Alamofire.request("API Server URL" , method: .get,
                    parameters: nil, encoding: JSONEncoding.default,
                    headers: headers ).responseJSON { (response:DataResponse<Any>in
 
        let apiDictionary = response.result.value as! NSDictionary
        // parsing //
 
    }
}
cs


짜잔! 조금더 직관적으로 보기 쉬워졌지요? header 처리도 편해졌고, method도 그리고 parameter도~ 


보다 자세한 내용은 공식 문서를 참조하도록 합시다.



저작자 표시 비영리 변경 금지
신고
댓글
댓글쓰기 폼
공지사항
최근에 달린 댓글
Total
12,660
Today
11
Yesterday
17
링크
«   2017/10   »
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        
글 보관함