[swift] Swift PromiseKit를 활용한 네트워크 요청 처리

PromiseKit는 Swift에서 비동기 작업을 처리하기 위한 라이브러리로, 네트워크 요청의 경우 많은 도움을 줄 수 있습니다. 이번 포스트에서는 Swift PromiseKit를 사용하여 네트워크 요청을 처리하는 방법에 대해 알아보겠습니다.

1. PromiseKit 설치

먼저, PromiseKit를 프로젝트에 설치해야 합니다. 이를 위해, 프로젝트의 Podfile에 다음과 같이 추가합니다.

pod 'PromiseKit'

그리고 터미널에서 pod install 명령을 실행하여 PromiseKit를 설치합니다.

2. 네트워크 요청 처리

네트워크 요청을 처리하기 위해서는 먼저 Promise 객체를 생성해야 합니다. Promise 객체는 비동기 작업의 결과나 오류를 처리하는데 사용됩니다.

import PromiseKit

func fetchData() -> Promise<Data> {
    return Promise<Data> { seal in
        // 네트워크 요청 코드 작성
        let url = URL(string: "https://api.example.com/data")!
        let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
            if let error = error {
                seal.reject(error)
            } else if let data = data {
                seal.fulfill(data)
            }
        }
        task.resume()
    }
}

Promise 객체를 생성하고 내부에서 비동기 작업을 수행하며, 작업이 성공하면 seal.fulfill(data)를 호출하여 작업 결과를 알립니다. 작업이 실패하면 seal.reject(error)를 호출하여 오류를 알립니다.

3. 네트워크 요청 사용

이제 fetchData() 메소드를 사용하여 네트워크 요청을 처리할 수 있습니다. 해당 메소드는 Promise<Data> 객체를 반환하므로, 이를 then 함수를 이용해 결과나 오류를 처리할 수 있습니다.

fetchData().done { data in
    // 작업 성공시 호출되는 코드
    let jsonString = String(data: data, encoding: .utf8)
    print(jsonString)
}.catch { error in
    // 작업 실패시 호출되는 코드
    print(error.localizedDescription)
}

done 함수는 작업이 성공했을 때 호출되는 클로저를 전달받으며, catch 함수는 작업이 실패했을 때 호출되는 클로저를 전달받습니다. 해당 클로저에서는 작업 결과나 오류에 대한 처리를 수행할 수 있습니다.

결론

Swift PromiseKit는 비동기 작업을 처리하기 위한 강력한 도구입니다. 네트워크 요청의 경우, Promise 객체를 사용하여 작업 결과와 오류를 간편하게 처리할 수 있습니다. 앞으로 프로젝트에서 다양한 비동기 작업을 처리할 때, Swift PromiseKit를 활용해 보시기 바랍니다.

참고 문서