BehaviorSubject 转换
BehaviorSubject with transformation
有没有办法 return 转换后的 BehaviorSubject?
class ViewModel {
let username: BehaviorSubject<String>
init() {
// I want username to emit trimmed values...
username = BehaviorSubject<String>(value: "")
// ... but map returns an Observable<>, not BehaviorSubject
.map { [=10=].trimmingCharacters(in: CharacterSet.whitespaces)
}
}
简短的回答是否定的,没有办法 return 转换后的 BehaviorSubject。
您必须首先定义要影响的输出,然后找出影响它的输入。 map
将介于两者之间。例如:
myTextField.rx.text.orEmpty
.map { [=10=].trimmingCharacters(in: CharacterSet.whitespaces)
.bind(to: username)
.disposed(by: disposeBag)
如果你想输出用户名,或者
username.asObservable() // I'm not sure if the asObservable() is actually necessary at the moment. Check that.
.map { [=11=].trimmingCharacters(in: CharacterSet.whitespaces)
.bind(to: myLabel.rx.text)
.disposed(by: disposeBag)
如果您希望用户名作为输入。
要创建 username
只需使用 let username = BehaviorSubject<String>()
有没有办法 return 转换后的 BehaviorSubject?
class ViewModel {
let username: BehaviorSubject<String>
init() {
// I want username to emit trimmed values...
username = BehaviorSubject<String>(value: "")
// ... but map returns an Observable<>, not BehaviorSubject
.map { [=10=].trimmingCharacters(in: CharacterSet.whitespaces)
}
}
简短的回答是否定的,没有办法 return 转换后的 BehaviorSubject。
您必须首先定义要影响的输出,然后找出影响它的输入。 map
将介于两者之间。例如:
myTextField.rx.text.orEmpty
.map { [=10=].trimmingCharacters(in: CharacterSet.whitespaces)
.bind(to: username)
.disposed(by: disposeBag)
如果你想输出用户名,或者
username.asObservable() // I'm not sure if the asObservable() is actually necessary at the moment. Check that.
.map { [=11=].trimmingCharacters(in: CharacterSet.whitespaces)
.bind(to: myLabel.rx.text)
.disposed(by: disposeBag)
如果您希望用户名作为输入。
要创建 username
只需使用 let username = BehaviorSubject<String>()