所有TooValidatorSwift 0.1.5

AllTooValidatorSwift 0.1.5

Jordan R. A.维护。



  • 作者
  • Jordan R. A.

所有TooValidatorSwift

Version License Platform

使用责任链模式的验证器。这是一个使用责任链模式为输入或其他值添加验证的Swift验证器。

如何使用

  • 基本验证器

    此库包括以下基本验证器:

    名称 描述
    MinLengthValidator 检查字符串的最小长度
    MaxLengthValidator 检查字符串的最大长度
    EqualsLengthValidator 检查字符串长度是否等于某个值
    EmptyValidator 检查字符串是否为空的快捷方式
    MinValueValidator 使用此验证进行最小值验证;此类型应该是可比较的(例如,int、double等)

    用法

    //***** Using Validator Only ******
    // Validate identification number (8 characters)
    let identificationNumber = identificationDocumentFT.text ?? ""
    let identificationNumberValidator = EqualsLengthValidator(expectedLength: 8, error: AllTooValidatorError.validationFailed("Identification number should be 8 characters"))
    let identificationNumberResult = identificationNumberValidator.validate(data: identificationNumber)
  • 字符串构建验证器

    StringValidatorBuilder有助于同时添加多个验证。它在一个验证失败时停止,因此顺序很重要

    // Validate phone number
    // 9-11 characters
    let phone = phoneTF.text ?? ""
    // Using a builder
    let phoneValidator = StringValidatorBuilder()
        .addValidator(EmptyValidator(error: AllTooValidatorError.validationFailed("Enter your phone")))
        .addValidator(MinLengthValidator(minLength: 9, error: AllTooValidatorError.validationFailed("Phone should be 9 to 11 characters")))
        .addValidator(MaxLengthValidator(maxLength: 11, error: AllTooValidatorError.validationFailed("Phone should be 9 to 11 characters")))
        .build()
    let phoneResult = phoneValidator.validate(data: phone)
  • 自定义验证器

    为此,我们使用了AdultAgeValidator。为了创建自定义验证器,它应从AllTooValidator扩展,并指定输入和输出类型。在这种情况下,我们使用字符串作为输入,并返回整数值。

    class AdultAgeValidator: AllTooValidator {
        func validate(data: String) -> AllTooValidatorResult<Int> {
            let emptyValidator = EmptyValidator(error: AllTooValidatorError.validationFailed("Enter your age"))
            let emptyValidationResult = emptyValidator.validate(data: data)
            
            if case let .failure(error) = emptyValidationResult {
                return .failure(error: error)
            }
            
            if let age = Int(data) {
                let minValueValidator = MinValueValidator(minValue: 18, error: AllTooValidatorError.validationFailed("Your age should be equal or greather than 18"))
                return minValueValidator.validate(data: age)
            } else {
                return .failure(error: AllTooValidatorError.validationFailed("Invalid age, enter again"))
            }
        }
    }

检查验证

要检查验证是否失败,我们使用AllTooValidatorResult显示检查,如果成功,我们可以获取值,对于失败,我们获取errorMessageResId

public enum AllTooValidatorResult<T> {
    case success(T)
    case failure(error: Error)
}

检查方式可以是这样的:

let ageResult = ageValidator.validate(data: age)

switch ageResult {
    case .success(let validatedData):
        print("Validation passed. Validated data as Int: \(validatedData)")
        yearsOldError.isHidden = true
    case .failure(let error):
        print("An unknown error occurred: \(error.localizedDescription)")
        yearsOldError.isHidden = false
        yearsOldError.text = error.localizedDescription
}

要求

  • Xcode 10.0+
  • iOS 9.3+

示例

要运行示例项目,请克隆仓库,然后从示例目录运行pod install

安装

所有TooValidatorSwift可通过CocoaPods获取。要安装它,只需将以下行添加到Podfile中:

pod 'AllTooValidatorSwift'

额外内容

  • 如果您想创建自己的构建器,请使用CompositeValidatorAnyAllTooValidator连接验证器,这些验证器实现了AllTooValidator协议。
  • 使用AllTooValidator创建自己的验证器。您需要指定输入和输出类型,它们可以不同。

其他平台

许可证

MIT许可证

版权所有 © 2023 Jordan R. A.

软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,这些责任可能源于合同、侵权或其他方式,无论是由于软件或其使用或其他方式而产生的。
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE