[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
에는 추가된 상품 객체를 전달합니다.