[swift] SwiftEventBus를 사용하여 장바구니에 상품 추가 이벤트 처리하는 방법은 어떻게 되는가?

장바구니에 상품을 추가할 때, 이벤트 처리를 위해 SwiftEventBus를 사용할 수 있습니다. SwiftEventBus는 간편한 이벤트 버스 구현을 제공하여 다른 컴포넌트간의 통신을 쉽게 할 수 있도록 도와줍니다.

SwiftEventBus 설정하기

먼저, SwiftEventBus를 설치하고 프로젝트에 추가해야 합니다. Cocoapods를 사용하는 경우, Podfile에 다음과 같이 SwiftEventBus를 추가합니다.

target 'YourProject' do
  use_frameworks!
  pod 'SwiftEventBus'
end

그리고 터미널에서 pod install 명령어를 실행하여 SwiftEventBus를 다운로드합니다.

이벤트 리스너 등록하기

이제 이벤트의 발생 및 처리를 위해 이벤트 리스너를 등록해야 합니다.

import SwiftEventBus

class CartViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // 이벤트 리스너 등록
        SwiftEventBus.onMainThread(self, name: "AddToCartEvent") { result in
            // 장바구니에 상품 추가 이벤트가 발생하면 이 곳에서 처리합니다.
            if let product = result?.object as? Product {
                self.addToCart(product)
            }
        }
    }

    // 장바구니에 상품 추가 메서드
    func addToCart(_ product: Product) {
        // 상품을 장바구니에 추가하는 코드
        // ...
    }
    
    deinit {
        // 이벤트 리스너 해제
        SwiftEventBus.unregister(self)
    }
}

위 코드에서 AddToCartEvent라는 이벤트 명으로 이벤트 리스너를 등록하고, 이벤트 발생 시 addToCart(_:) 메서드를 호출하여 장바구니에 상품을 추가합니다.

이벤트 발생하기

이벤트가 발생하는 코드에서는 SwiftEventBus.post() 메서드를 사용하여 이벤트를 발생시킬 수 있습니다. 상품을 추가하는 버튼의 액션 메서드에서 다음과 같이 이벤트를 발생시킬 수 있습니다.

import SwiftEventBus

class ProductDetailViewController: UIViewController {

    @IBAction func addToCartButtonTapped(_ sender: UIButton) {
        // 상품을 추가하는 로직
        let product = getProduct()
        CartManager.addToCart(product)
        
        // 장바구니에 상품 추가 이벤트 발생
        SwiftEventBus.post("AddToCartEvent", sender: product)
    }
}

위 코드에서 AddToCartEvent라는 이벤트를 발생시키고, sender에는 추가된 상품 객체를 전달합니다.

참고 자료