Здравствуйте, я пытаюсь сделать проект с помощью RxSwift, и я застрял, пытаясь правильно установить соединение между Координатором и ViewModel.
Гол
Используя наблюдаемые, Координатор получает и событие (в этом случае, когда строка была нажата), тогда делает все, что угодно .
Сценарий
Предоставление Поста (Строка)
typealias Post = String
У меня есть следующий Координатор :
class Coordinator {
func start() {
let selectedPostObservable = PublishSubject<Post>()
let viewController = ViewController()
let viewModel = ViewModel()
viewController.viewModel = viewModel
selectedPostObservable.subscribe { post in
//Do whatever
}
}
}
selectedPostObservable - это то, что я не знаю, как подключить его «чистым» способом к модели представления.
как ViewModel :
class ViewModel {
struct Input {
let selectedIndexPath: Observable<IndexPath>
}
struct Output {
//UI Outputs
}
func transform(input: Input) -> Output {
let posts: [Post] = Observable.just(["1", "2", "3"])
//Connect with selectedindex
let result = input.selectedIndexPath
.withLatestFrom(posts) { $1[$0.row] }
.asDriver(onErrorJustReturn: nil)
return Output()
}
}
Переменная result - это то, что я должен связать с selectedPostObservable .
И ViewController (хотя я думаю, что не имеет отношения к вопросу):
class ViewController: UIViewController {
//...
var viewModel: ViewModel!
var tableView: UITableView!
//...
func bindViewModel() {
let input = ViewModel.Input(selectedIndexPath: tableView.rx.itemSelected.asObservable())
viewModel.transform(input: input)
}
}
Большое спасибо.