gpt4 book ai didi

swift - 如何在 MVVM 中将 PublishSubject 呈现为 Observable?

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:04 26 4
gpt4 key购买 nike

我有这样的东西:

protocol ViewModel: class {
var eventWithInitialValue: Observable<Int> { get }
}

class ViewModelImpl: ViewModel {

let eventWithInitialValue: BehaviorSubject<Int> = BehaviorSubject(value: 0)

init() {
eventWithInitialValue.onNext(1)
}
}

class ViewController: UIViewController {

weak var viewModel: ViewModel?

private let bag = DisposeBag()

override func viewDidLoad() {
super.viewDidLoad()

viewModel?
.eventWithInitialValue
.subscribe(onNext: {
print($0)
}).disposed(by: bag)
}
}

我想与 ViewController 中的 viewModel 字段作为 Observables 进行通信。但是在 viewModel 中,这个字段应该是 [OneOf]Subject 类型(出于安全原因)。

上面的实现有下一个编译时错误 -> Type 'ViewModelImpl' does not conform to protocol 'ViewModel'

任何人都可以帮助实现这些要求吗?

最佳答案

你的问题不在于 Rx,你的错误与你的协议(protocol)有关

这将解决当前的问题

protocol ViewModel: class {
var eventWithInitialValue: BehaviorSubject<Int> { get }
}

class ViewModelImpl: ViewModel {

var eventWithInitialValue: BehaviorSubject<Int> = BehaviorSubject(value: 0)

init() {
eventWithInitialValue.onNext(1)
}
}

关于swift - 如何在 MVVM 中将 PublishSubject 呈现为 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50876928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com