障碍
障碍,检查表单验证的一种简单方式。
安装
CocoaPods
要使用CocoaPods安装障碍,请将以下行添加到您的Podfile
中。
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
pod 'Roadblock'
Carthage
Carthage是一个去中心化的依赖管理器,它构建你的依赖并为您提供二进制框架。
您可以使用以下命令使用Homebrew安装Carthage
$ brew update
$ brew install carthage
要使用Carthage将障碍集成到您的Xcode项目中,请在您的Cartfile
中指定它
github 'Digipolitan/roadblock' ~> 1.0
运行carthage update
以构建框架,并将构建的Roadblock.framework
拖放到您的Xcode项目中。
基础知识
首先,捕获错误,您需要将以下键添加到您的Localizable.strings文件中
"errors.validator.required" = "Missing required field";
"errors.validator.email" = "Invalid email";
"errors.validator.min_length" = "Minimum %1$d characters";
"errors.validator.max_length" = "Maximum de %1$d characters";
然后,您需要实现FormDelegate
协议
extension ViewController: FormDelegate {
func formDidSubmit(_ form: Form) {
self.validateButtonClicked()
}
}
然后在你的 viewDidLoad()
方法中注册表单,如下所示
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
public var form: Form!
private var formTextFieldChainable: FormTextFieldDelegateChainable?
override func viewDidLoad() {
super.viewDidLoad()
self.form = Form(fields: [
.init(identifier: Fields.email,
target: self.emailTextField,
name: "email",
validator: FieldValidators.group(FieldValidators.required(), FieldValidators.email()),
transformer: FieldTransformers.group(FieldTransformers.trim(), FieldTransformers.emptyIsNil())),
.init(identifier: Fields.password,
target: self.passwordTextField,
name: "password",
validator: FieldValidators.group(FieldValidators.required()),
transformer: FieldTransformers.group(FieldTransformers.trim(), FieldTransformers.emptyIsNil()))
], delegate: self)
let formTextFieldChainable = FormTextFieldDelegateChainable(form: self.form)
self.emailTextField.delegate = formTextFieldChainable
self.passwordTextField.delegate = formTextFieldChainable
self.formTextFieldChainable = formTextFieldChainable
}
}
然后你可以在你的 @IBAction
函数中处理表单的错误
@IBAction func validateButtonClicked() {
self.view.endEditing(true)
do {
try self.form.validate()
} catch {
if let err = error as? FormError {
let alertController = UIAlertController(title: "Error", message:
err.localizedDescription, preferredStyle: UIAlertControllerStyle.alert)
alertController.addAction(UIAlertAction(title: "Dismiss",style: UIAlertActionStyle.default, handler: nil))
self.present(alertController, animated: true, completion: nil)
}
}
return
}
贡献
详细信息请参阅 CONTRIBUTING.md!
本项目遵守 贡献者公约行为准则。通过参与,你将被期望维护这一准则。请将不可接受的行为报告给 [email protected].
许可证
Roadblock 在 BSD 3-Clause 许可证下授权。