【问题标题】:Reactive Cocoa Validation反应性可可验证
【发布时间】:2016-06-18 00:22:27
【问题描述】:

如何在 RAC 命令或按钮单击后验证表单?我的视图模型中有这个地方

self.executeLoginRacCommand = RACCommand(enabled: activateButtonSignal, signalBlock: { (any : AnyObject!) -> RACSignal! in

            return self.executeLoginAPI()
        })

//My question is here, how can I display an alert to my view controller saying may email is invalid.
//MARK: - Execute Login API
    private func executeLoginAPI() -> RACSignal {
        if self.isEmailValid(self.email) {
            return self.signInServices.signInAPIService.signInAPISignal(self.email, password: self.password)
        } else {
            self.errorMessage = "Please insert a valid email"
            return RACSignal.empty()
        }
    }

//MARK: -  Is Email Valid
    func isEmailValid(email: String) -> Bool {
        let emailRegEx = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"

        let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
        return emailTest.evaluateWithObject(email)
    }

我像这样在我的视图控制器中访问它:

 self.signInButton.rac_command = self.signInViewModel.executeLoginRacCommand

您能否建议一种验证无效电子邮件并在单击按钮后显示警报的好方法?提前致谢!

【问题讨论】:

  • 您自己搜索过“验证电子邮件”吗?
  • 是的,我用谷歌搜索了很多,但找不到答案。我试图改变我的代码。不幸的是,它不起作用。

标签: swift mvvm reactive-cocoa


【解决方案1】:

在您的else 分支中,您将返回一个空的 RACSignal。 相反,返回发送错误的 RACSignal (RACSignal.error(<the error>))。

在您的 ViewController 中,您可以订阅 self.executeLoginRacCommanderrors 属性并向用户显示错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多