Post

.bind(to:)

.bind(to:)

bindRxSwift에서 옵저버블(Observable)의 결과를 특정 대상에 연결할 때 사용하는 메서드.

bind의 특징:

  1. UI 업데이트에 자주 사용됨 → 예: UILabel.text, UIButton.isEnabled
  2. Main Thread에서 실행됨 → UI 업데이트를 안전하게 처리 가능
  3. 수동 구독 불필요subscribe(onNext:) 없이 자동으로 값을 바인딩
  4. 메모리 관리 자동화disposed(by:)로 해제 가능

예제 코드

  • textRelay에서 값이 방출됨.
  • label.rx.text랑 연결
1
2
3
4
5
let textRelay = BehaviorRelay<String>(value: "Hello")

textRelay
    .bind(to: label.rx.text) // label의 text 속성에 값 연결
    .disposed(by: disposeBag)
  • numberRelay에서 값이 방출됨.
  • bind로 값을 받아서 value로 읽음.
1
2
3
4
5
6
7
8
let numberRelay = BehaviorRelay<Int>(0)

numberRelay
    .bind { value in
        print("현재 값: \(value)")
    }
    .disposed(by: disposeBag)

  • 다른 옵져버블과 연결
    • UIView에서 발생한 이벤트와 바이딩할때는 이벤트를 인지하는 옵셔버블(logoutButtonTapped)의 타입도 Void여야 함.
1
2
3
logoutButton.rx.tap
            .bind(to: settingViewModel.logoutButtonTapped)
            .disposed(by: disposeBag)
1
2
3
4
5
6
7
8
9
class SettingViewModel {
   //...
    let logoutButtonTapped = PublishRelay<Void>()
    
    init() {
        //...
    }
}

This post is licensed under CC BY 4.0 by the author.