首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RxSwift输入输出,私有主题,但在类之外被触发

RxSwift输入输出,私有主题,但在类之外被触发
EN

Stack Overflow用户
提问于 2019-11-30 17:08:03
回答 1查看 435关注 0票数 0

我正在阅读关于输入输出ViewModel方法:https://medium.com/blablacar-tech/rxswift-mvvm-66827b8b3f10的博客

完整代码:https://gist.github.com/MartinMoizard

我只是不明白为什么

代码语言:javascript
复制
let greeting = validateSubject
        .withLatestFrom(nameSubject)
        .map { name in
            return "Hello \(name)!"
        }
        .asDriver(onErrorJustReturn: ":-(")

https://gist.github.com/MartinMoizard/4d66528a9959cbbdefa6d50394d2bfb1

如果validateSubjecthttps://gist.github.com/MartinMoizard/449be0d30920010210988f1773a2ca90中被窃听时是私有的,则将触发

代码语言:javascript
复制
final class ButtonCell: UITableViewCell, SayHelloViewModelBindable {
    @IBOutlet weak var validateButton: UIButton!
    var disposeBag: DisposeBag?

    override func prepareForReuse() {
        super.prepareForReuse()
        disposeBag = nil
    }

    func bind(to viewModel: SayHelloViewModel) {
        let bag = DisposeBag()
        validateButton.rx
            .tap
            .bind(to: viewModel.input.validate)
            .disposed(by: bag)
        disposeBag = bag
    }
}

提亚

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-30 22:03:01

他实际上并不是在tap上访问tap,但最终他创建了一些可访问的输入/输出层,例如:

代码语言:javascript
复制
struct Input {
   let name: AnyObserver<String>
   let validate: AnyObserver<Void>
} 

struct Output {
   let greeting: Driver<String>
}

与内部私有层/逻辑(如validateSubjectnameSubject)通信。

然后,他通过namevalidate传递输入中的各种信息,并期望输出的信息通过greeting返回。

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

https://stackoverflow.com/questions/59118403

复制
相关文章

相似问题

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