将MVVM与RxSwift一起使用的正确方法是什么?

问题描述 投票:0回答:1

我已经研究过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“。在这种情况下,如何声明函数更新?如何处理?

ios swift mvvm rx-swift
1个回答
0
投票

您可以添加这样的新方法:

func updateItem(at index: Int, with newValue: String)更新单个项目。

或:

fun update(with newValue: [String])用一个全新的值更新整个数组。

实现将是这样的:

fun update(with newValue: [String]) {
    data.accept(newValue)
}
© www.soinside.com 2019 - 2024. All rights reserved.