有人能告诉我为什么这每次都评估为真吗?!
输入是: jkhkjhkj
。我在 phone
字段中输入什么并不重要。每次都是真的...
NSRange range = NSMakeRange (0, [phone length]);
NSTextCheckingResult *match = [NSTextCheckingResult phoneNumberCheckingResultWithRange:range phoneNumber:phone];
if ([match resultType] == NSTextCheckingTypePhoneNumber)
{
return YES;
}
else
{
return NO;
}
这是
match
的值:(NSTextCheckingResult *) $4 = 0x0ab3ba30 <NSPhoneNumberCheckingResult: 0xab3ba30>{0, 8}{jkhkjhkj}
我正在使用 RegEx 和
NSPredicate
但我读过,因为 iOS4 建议使用 NSTextCheckingResult
但我找不到任何好的教程或示例。提前致谢!
最佳答案
您使用的类不正确。 NSTextCheckingResult
是由 NSDataDetector
或 NSRegularExpression
完成的文本检查的结果。使用 NSDataDetector
代替:
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber error:&error];
NSRange inputRange = NSMakeRange(0, [phone length]);
NSArray *matches = [detector matchesInString:phone options:0 range:inputRange];
// no match at all
if ([matches count] == 0) {
return NO;
}
// found match but we need to check if it matched the whole string
NSTextCheckingResult *result = (NSTextCheckingResult *)[matches objectAtIndex:0];
if ([result resultType] == NSTextCheckingTypePhoneNumber && result.range.location == inputRange.location && result.range.length == inputRange.length) {
// it matched the whole string
return YES;
}
else {
// it only matched partial string
return NO;
}
关于iphone - 电话号码的 NSTextCheckingResult,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11433364/