如何在RAC命令或按钮点击后验证表单?我在View Model中有这个地方
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)
}
我在我的View Controller中访问它,如下所示:
self.signInButton.rac_command = self.signInViewModel.executeLoginRacCommand
点击按钮后,您能否建议一种验证无效电子邮件和显示提醒的好方法?提前谢谢!
答案 0 :(得分:0)
在else
分支中,您将返回一个空的RACSignal。
相反,返回发送错误的RACSignal(RACSignal.error(<the error>)
)。
在ViewController中,您可以订阅errors
的{{1}}属性并向用户显示错误。