[swift] 클로저 활용 예시: 비동기 API 요청 처리

클로저는 Swift에서 비동기 작업을 처리하는 강력한 도구입니다. 이번 예시에서는 비동기 API 요청을 처리하는 방법을 살펴보겠습니다.

API 요청 함수 정의

우선 비동기 API 요청을 처리해주는 함수를 정의해야 합니다. 예를 들어, 서버로부터 특정 데이터를 가져오는 API 요청 함수를 아래와 같이 만들 수 있습니다.

func fetchData(completion: @escaping (Result<Data, Error>) -> Void) {
    // 비동기 작업이 이루어지는 코드
    
    // API 요청
    URLSession.shared.dataTask(with: url) { (data, response, error) in
        if let error = error {
            completion(.failure(error))
        } else if let data = data {
            completion(.success(data))
        }
    }.resume()
}

위 예시에서 fetchData 함수는 비동기 작업을 처리하고, 작업이 완료되면 클로저를 호출하여 결과를 전달합니다. 클로저의 매개변수로 Result 타입을 사용하여 성공과 실패를 나타냅니다.

API 요청 예시

fetchData 함수를 호출하여 API 요청을 처리하는 예시 코드는 아래와 같습니다.

fetchData { result in
    switch result {
    case .success(let data):
        // 데이터를 받아온 경우 처리할 코드
        print("Received data: \(data)")
    case .failure(let error):
        // 에러가 발생한 경우 처리할 코드
        print("Error: \(error)")
    }
}

위 예시에서 fetchData 함수를 호출하면서 클로저를 전달합니다. 클로저의 매개변수로 성공 또는 실패 결과가 전달되며, 해당 결과에 따라 처리할 코드를 작성할 수 있습니다.

정리

클로저를 활용하여 비동기 API 요청을 처리하는 방법을 알아보았습니다. 클로저를 사용하면 비동기 작업의 결과를 효과적으로 처리할 수 있으며, 코드의 가독성과 유지보수성을 높일 수 있습니다.

참고 문서