InputValidator 1.0.3

InputValidator 1.0.3

测试已测试
语言语言 SwiftSwift
许可 MIT
发布日期最新版本发布日期2017年4月
Swift 版本Swift 版本3.0
SPM支持 SPM

Elvis Nuñez 维护。



InputValidator

简介

InputValidator 是验证值的简单方法,InputValidator 允许您验证的内容包括

  • 必填项(非空)
  • 最大长度
  • 最小长度
  • 最大值
  • 最小值
  • 有效的字符
  • 格式(正则表达式)

例如,若要验证一个值在 5 和 6 之间,您可以这样做

let validation = Validation()
validation.minimumValue = 5
validation.maximumValue = 6

var result: Bool
let validator = InputValidator(validation: validation)
result = validator.validateString("4") // false
result = validator.validateString("5") // true
result = validator.validateString("6") // true
result = validator.validateString("7") // false

有关基本验证的更多信息,请参阅 Validation 仓库

它还有助于您验证一个字符串是否应该插入到另一个字符串中,这在验证 UITextField 上的输入时非常有用。例如验证信用卡的有效期,格式为 MM/YY,月份在 1-12 之间,YY 等于或晚于当前年份。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if (!string || [string isEqualToString:@"\n"]) return YES;

    CardExpirationDateInputValidator *inputValidator = [CardExpirationDateInputValidator new];
    return [inputValidator validateReplacementString:string withText:self.text withRange:range];
}

包含的内置输入验证器

  • CardExpirationDate(卡片过期日期)
  • Decimal(十进制)

创建自己的输入验证器

InputValidator 包含了 InputValidatable 协议。任何符合这个协议的类都可以被认为是输入验证器。例如,创建一个只允许字母的 InputValidator 可能像这样简单

public struct LetterInputValidator: InputValidatable {
    public var validation: Validation?

    public init(validation: Validation? = nil) {
        self.validation = validation
    }

    public func validateReplacementString(replacementString: String?, fullString: String?, inRange range: NSRange?) -> Bool {
        var valid = true
        if let validation = self.validation {
            let evaluatedString = self.composedString(replacementString, fullString: fullString, inRange: range)
            valid = validation.validateString(evaluatedString, complete: false)
        }

        if valid {
            let composedString = self.composedString(replacementString, fullString: fullString, inRange: range)
            if composedString.characters.count > 0 {
                let letterCharacterSet = NSCharacterSet.letterCharacterSet()
                let stringCharacterSet = NSCharacterSet(charactersInString: composedString)
                valid = letterCharacterSet.isSupersetOfSet(stringCharacterSet)
            }
        }

        return valid
    }
}

let validator = LetterInputValidator()
result = validator.validateString("A") // true
result = validator.validateString("2") // false
result = validator.validateString("AA") // true
result = validator.validateString("A7-w") // false

安装

InputValidator 可通过 CocoaPods 获取。为了安装,只需在您的 Podfile 中添加以下行

pod 'InputValidator'

许可

InputValidator 基于 MIT 许可。请参阅 LICENSE 文件以获取更多信息。

作者

Elvis Nuñez,@3lvis