У меня есть функция, которая принимает два параметра, связанных с RxSwift, и связывает их двунаправленно.
import Foundation
import RxSwift
import RxCocoa
func bibind<T>(property: ControlProperty<T>, variable: Variable<T>) -> Disposable {
var updating = false
let bindToUIDisposable = variable.asObservable().filter({ _ in
updating = !updating
return updating
}).bind(to: property)
let bindToVariable = property.filter({ _ in
updating = !updating
return updating
}).subscribe(onNext: { n in
variable.value = n
}, onCompleted: {
bindToUIDisposable.dispose()
})
return CompositeDisposable(bindToUIDisposable, bindToVariable)
}
Я пытаюсь назвать это так
bibind(property: self.userNameTextField.rx.text, variable: self.loginViewModel.userName.value )
Что показывает ошибку компилятора
Expression type 'Variable<String>' is ambiguous without more context
Модель представления это
import Foundation
import RxSwift
import RxCocoa
class LoginViewModel {
var userName = Variable<String>("")
var password = Variable<String>("")
init() {
userName = Variable("")
password = Variable("")
}
}