gpt4 book ai didi

ios - 使用 RxSwift 和 RXCocoa 在按钮单击时验证所有文本字段

转载 作者:行者123 更新时间:2023-11-28 09:50:27 25 4
gpt4 key购买 nike

我是 RxSwift 和 RxCocoa 的新手,正在学习。

我想在单击按钮时验证所有文本字段,并根据验证向用户显示警告消息。

验证成功后,我需要在表中插入记录。

引用以下代码...

var result = txtFname.rx.text
result.asObservable().subscribe(onNext: { text in
if text!.isEmpty {
self.showAlert(msg: "Plese enter first name.")
self.txtFname.becomeFirstResponder()
}
}).disposed(by: disposeBag)

result = txtLname.rx.text
result.asObservable().subscribe(onNext: { text in
if text!.isEmpty {
self.showAlert(msg: "Please enter last name.")
self.txtLname.becomeFirstResponder()
}
}).disposed(by: disposeBag)

result = txtEmail.rx.text
result.asObservable().subscribe(onNext: { text in

if text!.isEmpty {
self.showAlert(msg: "Please enter email id.")
self.txtLname.becomeFirstResponder()
}
}).disposed(by: disposeBag)

//need to check here if all fields are valid or not
//if all fields are valid then insert record....

当我按下一个按钮时,它一次检查所有验证并显示警报...

但我想做的是,如果一个验证失败,那么在上一个验证成功之前,它不应该再进一步......

我不知道如何做到这一点。任何帮助将不胜感激。

最佳答案

你可以这样做。

  self.button.rx.tap.asObservable()
.filter({ (_) -> Bool in
guard !(self.txtFname.text ?? "").isEmpty else {
self.showAlert(msg: "Please enter first name.")
self.txtFname.becomeFirstResponder()
return false
}

guard !(self.txtLname.text ?? "").isEmpty else {
self.showAlert(msg: "Please enter last name.")
self.txtLname.becomeFirstResponder()
return false
}

guard !(self.txtEmail.text ?? "").isEmpty else {
self.showAlert(msg: "Please enter email id.")
self.txtEmail.becomeFirstResponder()
return false
}

return true
})
.subscribe { _ in
// do something when all the fields are valid
self.showAlert(msg: "All fields are valid")
}
.disposed(by: disposeBag)

关于ios - 使用 RxSwift 和 RXCocoa 在按钮单击时验证所有文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49553049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com