[swift] SwiftEventBus를 사용하여 서버 응답 도착 이벤트 처리하는 방법은 어떻게 되는가?

SwiftEventBus는 Swift 언어로 작성된 이벤트 버스 라이브러리로, 간편하게 이벤트를 발행하고 구독하는 기능을 제공합니다. 이를 사용하여 서버 응답 도착 이벤트를 처리할 수 있습니다.

SwiftEventBus 설치하기

SwiftEventBus를 사용하기 위해서는 먼저 프로젝트에 해당 라이브러리를 설치해야 합니다. 가장 간편한 방법은 CocoaPods를 이용하는 것입니다. 프로젝트의 Podfile에 아래와 같은 내용을 추가합니다.

platform :ios, '10.0'
use_frameworks!

target 'YourProject' do
    pod 'SwiftEventBus'
end

그리고 터미널에서 pod install 명령을 실행하여 라이브러리를 다운로드하고 프로젝트에 추가합니다.

이벤트 발행하기

서버 응답 도착 이벤트를 처리하기 위해서는 먼저 해당 이벤트를 발행해야 합니다. 이벤트를 발행하는 코드는 다음과 같습니다.

import SwiftEventBus

// 서버 응답 도착 시 호출되는 함수
func handleServerResponse(response: String) {
    // 서버 응답 처리 로직 작성
    SwiftEventBus.post("serverResponseReceived", sender: response)
}

위의 예시 코드에서는 serverResponseReceived라는 이름의 이벤트를 발행하고, 서버 응답을 인자로 전달하고 있습니다.

이벤트 구독하기

이제 이벤트를 구독하여 서버 응답을 처리하는 코드를 작성해보겠습니다. 이벤트를 구독하는 코드는 다음과 같습니다.

import SwiftEventBus

// 서버 응답 도착 이벤트 처리 함수
SwiftEventBus.onMainThread(self, name: "serverResponseReceived") { notification in
    if let response = notification?.object as? String {
        // 서버 응답 처리 로직 작성
        print("서버 응답 도착:", response)
    }
}

위의 예시 코드에서는 serverResponseReceived 이름의 이벤트를 구독하고 있습니다. 이벤트 처리 함수 내부에서는 서버 응답을 받아 처리하는 로직을 작성할 수 있습니다. 이벤트 구독 시 onMainThread 메소드를 사용하면 UI 업데이트와 관련된 로직을 안전하게 처리할 수 있습니다.

사용 예시

이제 SwiftEventBus를 사용하여 서버 응답 도착 이벤트를 처리하는 방법을 알았으니, 이를 실제로 활용해보겠습니다.

import SwiftEventBus

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 서버 응답 도착 이벤트 구독
        SwiftEventBus.onMainThread(self, name: "serverResponseReceived") { notification in
            if let response = notification?.object as? String {
                // 서버 응답 처리 로직 작성
                self.displayResponseAlert(response: response)
            }
        }
    }
    
    // 서버 응답을 알림창으로 표시
    func displayResponseAlert(response: String) {
        let alert = UIAlertController(title: "서버 응답", message: response, preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "확인", style: .default, handler: nil))
        self.present(alert, animated: true, completion: nil)
    }

    // 서버 응답을 전달받아 이벤트 발행
    func handleServerResponse(response: String) {
        SwiftEventBus.post("serverResponseReceived", sender: response)
    }
}

위의 예시 코드는 UIViewController에서 SwiftEventBus를 이용하여 서버 응답 도착 이벤트를 구독하고, 도착한 응답을 알림창으로 표시하는 예시입니다.

SwiftEventBus를 활용하면 이벤트 기반 아키텍처를 쉽게 구성할 수 있고, 서버 응답과 같은 비동기 이벤트 처리를 효율적으로 관리할 수 있습니다.

참고 자료