[swift] SwiftyJSON을 사용하여 Alamofire 응답에서 특정 필드값을 추출하여 날씨 정보 조회하는 방법

이번 글에서는 Swift라는 프로그래밍 언어와 SwiftyJSON, Alamofire라는 두 가지 라이브러리를 사용하여 날씨 정보를 조회하는 방법에 대해서 알아보겠습니다.

라이브러리 설치

먼저, SwiftyJSON과 Alamofire를 프로젝트에 추가해야 합니다. CocoaPods를 사용하는 경우, Podfile에 다음과 같이 라이브러리를 추가합니다.

pod 'SwiftyJSON'
pod 'Alamofire'

그리고 터미널에서 pod install 명령어를 실행하여 라이브러리를 설치합니다.

Alamofire를 사용하여 API 호출하기

먼저, Alamofire를 사용하여 OpenWeather API에서 날씨 정보를 가져오는 함수를 작성하겠습니다. 다음 코드는 getWeatherData라는 함수를 정의하고, Alamofire를 사용하여 API를 호출하는 예시입니다.

import Alamofire

func getWeatherData(completion: @escaping (Weather) -> Void) {
    let apiKey = "YOUR_API_KEY"
    let city = "Seoul"
    let urlString = "http://api.openweathermap.org/data/2.5/weather?q=\(city)&appid=\(apiKey)"
    
    Alamofire.request(urlString).responseJSON { response in
        if let json = response.result.value {
            let weatherData = Weather(json: JSON(json))
            completion(weatherData)
        }
    }
}

위 코드에서 YOUR_API_KEY는 OpenWeatherMap API에서 발급받은 API 키를 넣어주어야 합니다.

SwiftyJSON을 사용하여 필드값 추출하기

다음으로, SwiftyJSON을 사용하여 API 응답에서 필요한 필드값을 추출하는 방법에 대해 알아보겠습니다. 예를 들어, 응답에서 날씨의 온도와 날씨 상태를 추출해보겠습니다.

import SwiftyJSON

struct Weather {
    let temperature: Double
    let weatherState: String
    
    init(json: JSON) {
        temperature = json["main"]["temp"].doubleValue
        weatherState = json["weather"][0]["description"].stringValue
    }
}

Weather 구조체에서 사용할 필드인 temperatureweatherState를 정의하고, 이를 위한 초기화 메서드를 작성합니다. SwiftyJSON의 doubleValuestringValue 메서드를 사용하여 필드값을 추출하고, 해당 값을 저장합니다.

결과 확인하기

이제, getWeatherData 함수를 호출하여 날씨 정보를 가져와서 출력해봅시다.

getWeatherData { weatherData in
    print("Temperature: \(weatherData.temperature) K")
    print("Weather State: \(weatherData.weatherState)")
}

위 코드를 실행하면, API에서 가져온 날씨 정보가 출력되고, 온도와 날씨 상태가 표시됩니다.

마무리

이번 글에서는 SwiftyJSON과 Alamofire를 사용하여 API 응답에서 특정 필드값을 추출하여 날씨 정보를 조회하는 방법을 알아보았습니다. 이를 통해 Swift 개발에서 간편하고 효율적으로 API 데이터를 활용할 수 있습니다.