无法将“可观察”类型的值转换为预期的参数类型“ BehaviorRelay”
我正在使用RxSwift。 我有
在VM中。
let St: BehaviorRelay<String>
在VC中作为输入
St: self.searchbar.rx.text.orEmpty.asObservable()
如何转换? 所以,我可以得到
来自搜索栏的行为继电器。确保其输入。
答案 0 :(得分:0)
您可以在ViewModel中创建Input和Output结构,并将searchText作为Observable通过Input传递给ViewModel
class ViewModel {
private let searchText = BehaviorRelay<String>(value: "")
struct Input {
let text: Observable<String>
}
struct Output {
let result: Driver<[String]>
}
func transform(input: Input) -> Output {
input.text.bind(to: searchText)
let result = Driver<[String]>.just([])
return Output(result: result)
}
}
在ViewController中
class SearchViewController {
let viewModel = ViewModel()
override func viewDidLoad() {
super.viewDidLoad()
bindViewModel()
}
func bindViewModel() {
let input = ViewModel.Input(text: self.searchBar.rx.text.orEmpty.asObservable())
let output = viewModel.transform(input: input)
//use output to show results
}
}
答案 1 :(得分:0)
您可以为此使用RxCocoa的bind(to: _)
方法。
class ViewModel {
let inputText = BehaviorRelay(value: "")
}
class YourViewController: UIViewController {
private let viewModel = ViewModel()
func viewDidLoad() {
searchBar.rx.text
.orEmpty()
.bind(to: viewModel.inputText)
.disposed(by: disposeBag)
}
}