RxSwift Beginners Episode 4 - BehaviorRelay and Map Operator
BehaviorRelay
에 값 주기BehaviorRelay
구현BehaviorRelay
값 변화에 따라 원하는 작업 구현 private func setFoodImageRx() {
foodImageNameRelay
.map{UIImage(named: $0)}
.bind(to: foodImage
.rx
.image)
.disposed(by: disposeBag)
}
class FoodViewController: UIViewController {
@IBOutlet weak var foodImage: UIImageView!
let foodImageNameRelay: BehaviorRelay = BehaviorRelay<String>(value: "")
override func viewDidLoad() {
super.viewDidLoad()
setFoodImage()
}
private func setFoodImage() {
guard let foodImageName = foodImageName else {
return
}
foodImage.image = UIImage(named: foodImageName)
}
}
navDetailVC.foodImageName = foodModel.imageName
foodModel
에 바인딩할 데이터를 세팅, 이후 viewDidLoad
에서 이미지 뷰에 해당 데이터를 사용해 세팅하는 접근 방법class FoodViewController: UIViewController {
@IBOutlet weak var foodImage: UIImageView!
let foodImageNameRelay: BehaviorRelay = BehaviorRelay<String>(value: "")
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
setFoodImageRx()
}
private func setFoodImageRx() {
foodImageNameRelay
.map{UIImage(named: $0)}
.bind(to: foodImage
.rx
.image)
.disposed(by: disposeBag)
}
}
navDetailVC.foodImageNameRelay.accept(foodModel.imageName)
foodImageNameRelay
라는 BehaviorRelay
구현 → 해당 Relay
에 값을 넣어준 뒤 Observable
의 이벤트를 스스로 감지 가능 foodImageNameRelay
에 들어오는 특정 값을 map
으로 변환 가능 → 이미지 뷰에 넣을 UIImage
로 만든 뒤 foodImage
에 바인딩하는 코드