1
我有一个设置为rxSwift观察员的处理上我的ViewModelrxSwift按钮按下观察员问题
init(login: Observable<String>, password: Observable<String>, buttonPress: Observable<Void>) {
let userInputs = Observable.combineLatest(login, password) { (login, password) -> (String, String) in
return (login, password)
}
let callFromPress = buttonPress
.withLatestFrom(userInputs)
.map { (login, password) in
self.makeLoginRequest(userLogin: login, loginPassword: password, loginSecret: self.loginSecret, deviceToken: self.deviceToken)
}
}
一个init然而,当我点击该按钮,没有任何反应。它被连接到VC,因为如此:
buttonPress: self.loginView.loginButton.rx.tap.asObservable()
任何解决方案,为什么尽管没有错误按钮点击不触发任何东西?
更新:
init(login: Observable<String>, password: Observable<String>, buttonPress: Observable<Void>) {
let userInputs = Observable.combineLatest(login, password) { (login, password) -> (String, String) in
return (login, password)
}
buttonPress.subscribe(onNext: { each in
print(each)
.withLatestFrom(userInputs)
.map { (login, password) in
self.makeLoginRequest(userLogin: login, loginPassword: password, loginSecret: self.loginSecret, deviceToken: self.deviceToken)
}
}).disposed(by: self.disposeBag)
}
错误:
Extraneous argument label 'onNext:' in call
更新2:
init(login: Observable<String>, password: Observable<String>) {
// each time the login and password change, returns login and string value
didTapLoginButton = { [weak self] _ in
// allows for strong self reference
guard let `self` = self else { return }
Observable.combineLatest(login, password) { (login, password) in
//
}
.subscribe(onNext: { response in
self.makeLoginRequest(userLogin: login, loginPassword: password, loginSecret: self.loginSecret, deviceToken: self.deviceToken)
// do something with your response
})
.disposed(by: self.disposeBag)
}
}
,谢谢,我更新了OP与现在按下按钮的代码,但它抛出错误处置包:表达式类型'()'是不明确的,没有更多的上下文......我假设还有其他问题? – jackdm
我已经编辑了我的答案和更多细节,我会在你的用例中做。 – XFreire
感谢只有查询是为什么它会抛出“现在无法在LoginRequest函数上将类型'()'的值转换为结束结果类型'(String,String)'''? – jackdm