首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带变换的BehaviorSubject

带变换的BehaviorSubject
EN

Stack Overflow用户
提问于 2019-02-20 14:49:15
回答 1查看 57关注 0票数 1

有没有办法返回转换后的BehaviorSubject?

代码语言:javascript
复制
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 { $0.trimmingCharacters(in: CharacterSet.whitespaces) 
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-20 19:45:28

简短的回答是否定的,没有办法返回转换后的BehaviorSubject。

您必须首先定义要影响的输出,然后找出影响它的输入。map将介于这两者之间。举个例子:

代码语言:javascript
复制
myTextField.rx.text.orEmpty
    .map { $0.trimmingCharacters(in: CharacterSet.whitespaces)
    .bind(to: username)
    .disposed(by: disposeBag)

如果希望将username作为输出,或者

代码语言:javascript
复制
username.asObservable() // I'm not sure if the asObservable() is actually necessary at the moment. Check that.
    .map { $0.trimmingCharacters(in: CharacterSet.whitespaces)
    .bind(to: myLabel.rx.text)
    .disposed(by: disposeBag)

如果您想让username作为输入。

只需使用let username = BehaviorSubject<String>()即可创建username

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54780416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档