ios - actions 可以成为 MVVM ViewModel 的一部分吗?

标签 ios swift core-data mvvm viewmodel

我有一个像这样快速编写的 viewModel:

public protocol NewsViewModel {
    var imageString: String? { get }
    var title: String? { get }
    var dateString: String? { get }
    var action: (() -> ())? { get set}
}

然后我的核心数据对象符合viewModel,如下所示:

extension NewsDataObject {

    private func viewModel(action: (() -> ())?) -> NewsViewModel {

        struct NewsViewModelDefault: NewsViewModel {
            var imageString: String?
            var title: String?
            var dateString: String?
            var action: (() -> ())?
        }

        return NewsViewModelDefault(imageString: imgUrlString,
                                    title: articleTitle,
                                    dateString: pubDate,
                                    action: action)
    }
}

在 viewModel 中使用 action 是个好习惯吗?如果是或否,优点和缺点是什么?

最佳答案

我认为这实际上是根据您的行为做出的判断。如果您的操作只是更新 UI,那么将其保留在 Controller 或 View 中是有意义的。但是,如果它本质上与模型或网络层集成,那么将其移至 View 模型中可能是有意义的。

也许您可以在这里详细说明您的场景以获得更好的建议?

一般来说,我总是会在 View 或 Controller 中实现初始控制处理程序。然后根据需要调用 View 模型上的方法。

/*
MyController
*/
myButton.add(target: self, action, #selector(buttonHandler), for: .touchUpInside)

func buttonHandler() {
    // Decide here if the actual logic belongs in the view model or controller
}

因此,捕获操作并将逻辑传递到最有意义的地方。至少我会这样处理。

关于ios - actions 可以成为 MVVM ViewModel 的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53866834/

相关文章:

macos - 当我不需要多文档支持时使用 NSDocument?

ios - react-native run-ios 给出了这个错误

ios View 的逻辑比较

ios - Swift 中的“NSInternalInconsistencyException”

swift - 将选项卡 View 链接到它的文件

ios - 核心数据 : disable undo for specific attributes. 推荐的方法不起作用

ios - 核心数据最佳实践——我在利用 C.D.正确有效? - iOS swift

ios - 调整 UITableView 背景 View 的框架?

ios - 错误 : ld: library not found for -lPods with CocoaPods

ios - 访问 ObjC 类中的参数化 swift 方法