【发布时间】:2013-12-09 09:16:07
【问题描述】:
我可以解释这个问题的最简单方法是使用代码示例及其输出,但本质上,NSDataDetector 正在检测包含“电话号码”字样的字符串中的电话号码。
NSError *error = nil;
NSDataDetector *dataDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber
error:&error];
NSArray *stringsToTest = @[
@"testing phone number 0123 4567891",
@"testing some other number 0123 4567892",
@"phone number 0123 4567893",
@"blah blah 0123 4567894",
@"testing telephone number 0123 4567895"
];
for (NSString *string in stringsToTest)
{
[dataDetector enumerateMatchesInString:string
options:0
range:NSMakeRange(0, string.length)
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSLog(@"%@", result.phoneNumber);
}];
}
输出:
2013-11-24 19:04:26.000 PhoneNumberDetector[21874:70b] phone number 0123 4567891
2013-11-24 19:04:26.000 PhoneNumberDetector[21874:70b] 0123 4567892
2013-11-24 19:04:26.000 PhoneNumberDetector[21874:70b] phone number 0123 4567893
2013-11-24 19:04:26.000 PhoneNumberDetector[21874:70b] 0123 4567894
2013-11-24 19:04:26.001 PhoneNumberDetector[21874:70b] 0123 4567895
我已经阅读了文档并搜索了 SO,但找不到任何表明这是否是预期行为以及如果是,为什么。
这发生在 7.0 模拟器以及运行 7.0.4 的 iPhone 5s 上。
如果有人能阐明这个问题,我将不胜感激。
更新:
澄清一下,在访问 NSTextCheckingResult phoneNumber 属性时,我不希望文本“电话号码”成为结果的一部分。
【问题讨论】:
-
那是这些输入的实际日志吗?您能否更改源编号,以便准确查看匹配的结果。我不知道有任何文档涵盖此问题,问题是您想如何处理它。
-
是的,输出是正确的,我已经编辑了数字以帮助显示匹配项 (1,2,3,4,5)。
-
这是ios 7的奇怪行为,你必须在苹果网站上报告。
-
在 bugreport.apple.com 和 Open Radar openradar.appspot.com/15561004 提交的错误报告
-
我不确定这是一个错误还是故意的,但我有一个相关的问题,其当前解决方案取决于此行为,所以如果它是一个错误,我会有点难过得到修复:stackoverflow.com/questions/24880007/…
标签: objective-c nsdatadetector datadetectortypes