测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可 | MIT |
发布日期最新版本发布日期 | 2017年4月 |
Swift 版本Swift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Elvis Nuñez 维护。
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];
}
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