[swift] SwiftyJSON을 사용하여 Alamofire 응답에서 특정 필드값을 추출하여 소수점 이하 자리수 처리하는 방법

Alamofire와 SwiftyJSON은 iOS 애플리케이션에서 네트워크 요청을 처리하고 JSON 응답을 다루는 데 사용되는 인기있는 라이브러리입니다. 이들을 결합하여 네트워크 요청을 보내고 응답에서 필요한 데이터를 추출하는 방법을 알아보겠습니다. 특히, 추출한 데이터의 소수점 이하 자리수를 처리하는 방법에 대해서도 알아보겠습니다.

1. SwiftyJSON 설치

먼저, SwiftyJSON을 설치하기 위해 CocoaPods를 사용하는 방법을 소개합니다. Podfile에 다음 코드를 추가합니다.

pod 'SwiftyJSON'

그런 다음 터미널에서 프로젝트 루트 디렉토리로 이동한 후 다음 명령어를 실행합니다.

pod install

2. Alamofire로 네트워크 요청 보내기

Alamofire를 사용하여 서버로 네트워크 요청을 보냅니다. 예를 들어, GET 요청을 보내고 응답으로 JSON 데이터를 받는다고 가정하겠습니다.

import Alamofire

func fetchDataFromServer() {
    Alamofire.request("https://api.example.com/data", method: .get).responseJSON { response in
        switch response.result {
        case .success(let value):
            let json = JSON(value)
            // JSON 데이터 처리하는 코드를 작성
        case .failure(let error):
            print("Error: \(error)")
        }
    }
}

3. SwiftyJSON으로 필드값 추출하기

SwiftyJSON에서는 JSON 데이터를 간편하게 다룰 수 있습니다. 원하는 필드값을 추출할 때는 dot notation을 사용하여 해당 필드에 접근합니다.

import SwiftyJSON

func extractDataFromJSON(json: JSON) {
    let name = json["name"].stringValue
    let age = json["age"].intValue
    let height = json["height"].doubleValue
    
    print("Name: \(name)")
    print("Age: \(age)")
    print("Height: \(height)")
}

4. 소수점 이하 자리수 처리하기

SwiftyJSON을 사용하여 추출한 소수값을 자릿수와 함께 처리할 수 있습니다. rounded() 메서드를 사용하여 원하는 자릿수까지 반올림할 수 있습니다.

예를 들어, 추출한 height 값을 소수점 이하 2자리까지 반올림하여 표시하려면 다음과 같이 코드를 작성합니다.

let roundedHeight = height.rounded(toPlaces: 2)
print("Rounded Height: \(roundedHeight)")

다음은 rounded(toPlaces:) 확장 메서드의 구현입니다.

extension Double {
    func rounded(toPlaces places: Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return (self * divisor).rounded() / divisor
    }
}

위의 확장 메서드를 사용하면 원하는 자릿수까지 소수값을 반올림할 수 있습니다.

참고 자료