+ 2020.05.18
2020/05/18 - [iyOmSd/Title: Swift] - [Swift] - Alamofire 5.1 변경된 통신 및 Json Dynamic Key
이전글에서는
[Swift] Alamofire를 사용하여 API JSON 데이터 받기 (1/2)
Alamofire과 URLSession을 이용한 통신
NS자료형을 이용한 파싱과 JSONDecoder을 이용한 파싱을 해봤어요!!
이번에도 라이브러리는 CocoaPods을 통해서 받아올거에요
https://github.com/SwiftyJSON/SwiftyJSON
작성일을 기준으로
pod 'SwiftyJSON', '~> 4.0'
를 하면 된다고 하네요!!
버전이 업데이트 될 수 있어서 안먹히는 경우도 많으니까
작성일을 잘 확인해주세요
전 게시물에서 Alamofire의 POST통신 형식만 확인했고
GET형식을 하지않았는데 이번에는
GET형식으로 통신하는 코드로 해볼게요
라이브러리를 사용해서 간단하게 JSON을 파싱하는방법
import Foundation
import Alamofire
import SwiftyJSON
struct CheckIdService {
private init() { }
static let shared = CheckIdService()
let header: HTTPHeaders = [
"Content-Type" : "application/json"
]
func getCheckIdResult(userid: String, completion: @escaping (_ b: Bool) -> Void) {
let url = DanBeeAPI.checkIdURL+"\(userid)"
Alamofire.request(url).responseJSON {
response in
switch response.result {
case .success(let value):
let json = JSON(value)
let result = json["result"].intValue
if result == 404 {
completion(true)
}else {
completion(false)
}
default:
return
}
}
}
}
되게 코드량도 적고 간결해 보이죠??
GET통신을 할때는
POST통신을 할때는
아무래도 POST는 이것저것 많이들어가다보니 길어질 수도 있고
제가 비효율적인 방법을 사용 했을수도있어요....ㅠ
쓰는 방법은 마찬가지로 result에는
라이브러리 내장 성공코드가 포함되어있어서
그값을 이용해서 실패와 성공인 경우를 나누면 되요
이제 그뒤에 SwiftyJSON을 사용해볼거에요
JSON()
를 이용해서 파싱 받을수 있어요
value에는 JSON형식의 데이터가 들어있어요
JSON()을 이용해서 파싱해준 변수 json에는
key 와 value 형태인 Dictionary형 변수가 저장되요
key값으론 JSON의 key값이 될거에요
여기서는 [result : Int] 식의 데이터이기때문에
.intValue를 통해서 int 데이터를 받아서 result변수에 저장했어요
저번에 했던 JSON형식처럼 복잡한 형태라면
JSON에서 data는 Array로 존재하므로
arrayValue로 파싱받는데
서버에서 해당되는 값은 1개만 들어오도록 되어있어서
인덱스 0값을 가져올거에요
가져오면
id
type
del_yn
name
phone
.
.
.
다양한 키값들을 통해서 데이터를 파싱 할 수 있어요
통신 끝!!
더 좋은 방법도 있을 거에요
항상 이 코드만이 답이 아니에요!!
이제 통신 정도는 가뿐ㅎ...하...ㄱ...ㅔ..
'iyOmSd > Title: Swift' 카테고리의 다른 글
[Swift] ViewController 전환 효과 애니메이션 - UIModalTransitionStyle, UIModalPresentationStyle (0) | 2019.12.03 |
---|---|
[Swift] ScrollView 오토레이아웃 잡기 (2) | 2019.11.17 |
[Swift] Alamofire를 사용하여 API JSON 데이터 받기 (1/2) (0) | 2019.10.27 |
[Swift] 코드로만 AutoLayout 적용하기(Programmatically AutoLayout) (1) | 2019.10.23 |
[Swift] Push, Present 화면 전환하기 (0) | 2019.10.01 |