障碍 1.0.2

障碍 1.0.2

Benoit BRIATTE维护。



障碍 1.0.2

  • Digipolitan

障碍

Swift Version Build Status CocoaPods Compatible Carthage Compatible Platform Twitter

障碍,检查表单验证的一种简单方式。

安装

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 许可证下授权。