RxCocoa

<aside> 💡 RxSwift 의 요소들을 UIKit View 들에 extension 해서 접목시킨 것

UILabel 로 예시를 들었을 때, label.rx.textBinder 라는 타입이 있는데, viewModelObservable 에 bind 할 수 있음

기존에 아래처럼 사용하던 코드를

viewModel.itemsCount
		.map { "\\($0)" }
		.subscribe(onNext: { [weak self] in
				self?.itemsCountLabel.text = $0
		})
		.disposed(by: disposeBag)

이와 같이 변경 가능

viewModel.itemsCount
		.map { "\\($0)" }
		**.bind(to: itemsCountLabel.rx.text)**
		.disposed(by: disposeBag)

.bind 를 사용하면, 코드 양이 줄어들고, [weak self] 를 사용하여 순환참조를 없애던 것을 따로 명시 없이 사용 가능

</aside>

RxCocoa 의 미친 편한 기능..

UIKit View 들에 적용 가능하도록 만든 것이기 때문에 UITableView 에도 사용 가능

viewModel.menuObservable
		.bind(to: tableView.rx.items(
				cellIdentifier: cellId,
				cellType: MenuItemTableViewCell.self)
		) { index, item, cell in
				// index 는 indexPath.row
				// item 은 menuObservable 의 menu 하나
				// cell 은 MenuItemTableViewCell 을 지정해 줌
				cell.title.text = item.name
				cell.price.text = "\\(item.price)"
				cell.count.text = "\\(item.count)"
		}
		.disposed(by: disposeBag)