我已经研究过MVVM&RxSwift。但是我很困惑使用MVVM作为正确的方法。
我知道好的方法是使用输入/输出来访问变量我的问题是如何用这种模式的概念来处理功能?
这是我的代码。
protocol ViewModelType {
associatedtype Input
associatedtype Output
var input : Input { get }
var output : Output { get }
}
class ViewModel: ViewModelType {
var input: ViewModel.Input
var output: ViewModel.Output
struct Input {
var info = BehaviorRelay<String>(value: "")
}
struct Output {
var showTitle: Observable<String>
}
var data = BehaviorRelay<[String]>(value: [])
init() {
self.input = Input()
self.output = Output()
...
}
}
例如,我想使用“ func update()”作为输入(因此使我可以像这样通过“ viewModel.input.update()访问),并希望在函数中使用类的实例成员” data“。在这种情况下,如何声明函数更新?如何处理?
您可以添加这样的新方法:
func updateItem(at index: Int, with newValue: String)
更新单个项目。
或:
fun update(with newValue: [String])
用一个全新的值更新整个数组。
实现将是这样的:
fun update(with newValue: [String]) {
data.accept(newValue)
}