有人可以告诉我如何在IOS中使用键值验证吗?我很迷惑.
我正在编写Payments SDK,人们将信用卡号,安全码等传递给Card类,我需要验证这些值.例如,确保信用卡号有效.
是否可以进行自动验证?
另外,我们可以立即调用所有验证器吗?
就像我有一个Card类一样,我可以调用if([card isValid])来一次调用所有的验证函数而不是自己调用吗?喜欢:
Card * card = [[Card alloc] init];
card.number = @"424242...";
card.securityCode = @"455";
card.expirationMonth = @"";
card.expirationYear = @"";
if([card isValid]) {
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
Susan提供的链接包含您应该需要的所有细节.示例实现如下:
- (BOOL)validateSecurityCode:(id *)ioValue
error:(NSError * __autoreleasing *)outError
{
// The securityCode must be a numeric value exactly 3 digits long
NSString *testValue = (NSString *)*ioValue;
if (([testValue length]!=3) || ![testValue isInteger])) {
if (outError != NULL) {
NSString *errorString = NSLocalizedString(
@"A Security Code must be exactly 3 characters long.",
@"validation: Security Code, invalid value");
NSDictionary *userInfoDict = @{ NSLocalizedDescriptionKey : errorString };
*outError = [[NSError alloc] initWithDomain:SECURITYCODE_ERROR_DOMAIN
code:SECURITYCODE_INVALID_NAME_CODE
userInfo:userInfoDict];
}
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
注意:我NSString -isInteger在这篇文章中使用过.
手册说
您可以直接调用验证方法,也可以通过调用validateValue:forKey:error:并指定密钥.
这样做的好处是您的- (BOOL)isValid方法可以非常简单.
- (BOOL)isValid
{
static NSArray *keys = nil;
static dispatch_once_t once;
dispatch_once(&once, ^{
keys = @[@"securityCode", @"number", @"expirationMonth", @"expirationYear"];
});
NSError *error = nil;
for (NSString *aProperty in keys) {
BOOL valid = [self validateValue:[self valueForKey:aProperty]
forKey:aProperty
error:&error];
if (!valid) {
NSLog("Validation Error: %@", error);
return NO;
}
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2316 次 |
| 最近记录: |