Ios 如何在MVVM中使用UIAlertController?

Ios 如何在MVVM中使用UIAlertController?,ios,swift,mvvm,uialertcontroller,Ios,Swift,Mvvm,Uialertcontroller,我有一个VC,代码显示警报: func showMessage() { let alertView = UIAlertController(title: "TEST", message: self.loginViewModel.errorText, preferredStyle: .alert) alertView.addActi

我有一个VC,代码显示警报:

func showMessage() {
    let alertView = UIAlertController(title: "TEST",
                                      message: self.loginViewModel.errorText,
                                      preferredStyle: .alert)
    alertView.addAction(UIAlertAction(title: "Ok", style: .destructive, handler: nil))
    present(alertView, animated: true, completion: nil)
}
我的viewModel中有这个登录逻辑,需要触发这个函数:

func submitLoginRequest(userLogin: String, loginPassword: String, loginSecret: String, deviceToken: String) {
        let userLogin = UserServices.init()
        manager.userServicesApiRequest(url: Endpoints.login, request: userLogin) { (data, error) in
            if let data = data {
                let status = data["status"].stringValue
                if status == "success" {
                    guard let userObject = UserProfileModel.init(data) else { return }
                    let encodedUserObject: Data = NSKeyedArchiver.archivedData(withRootObject: userObject)
                    UserDefaults.standard.set(encodedUserObject, forKey: "userProfile")
                    print("Login Succeeded")                        self.coordinatorDelegate?.loginViewModelDidLogin(viewModel: self)
                } else {
                    self.errorText = data["reason"].stringValue
                    // here is where the controller needs calling!
                }
            }

我想知道我应该如何让它们正确地交互,以在VM案例发生时触发VC?

在这一点上,您应该调用类似于
self.coordinatorDelegate?.loginViewModeldFailtoLogin()
的东西,并让它处理它。这是我的想法,但是我该如何让协调员访问/处理viewcontroller?另一位代表?就个人而言,我认为MVVM在iOS上是浪费时间,除非您使用的是数据绑定框架。MVVM来自Windows,在Windows中通过WPF具有内置的数据绑定功能。实际上,您的视图模型无论如何都不应该执行登录,这是模型的责任,视图模型只是公开模型的相关属性以启用数据绑定。视图协调器需要向视图(在iOS的情况下,它将是UIViewController)建议可以显示警报的失败登录。是的,这将是通过授权。我确实有rxSwift,但我是新手,所以不总是使用它。那么登录函数应该在模型类内部调用?VC处理通过委托触发的警报控制器?你可以有一个API对象;它对API进行建模/抽象。它不是“业务逻辑”,但它有代码来实现数据模型和网络api之间的适配器模式。