0

我一直在努力理解这NSDataDetector门课。我已经阅读了文档,但无法理解。我所做的一切 Xcode 都告诉我有一个错误。

我觉得我可能在这次尝试中走上了正确的道路。如何编写一个简单的基础程序来查找字符串中的名称?

 NSError *error = nil;
    NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeAddress error:&error];
    NSString *string = @"(555) 555-5555 / Nick";
    NSArray *matches = [detector matchesInString:string
                                         options:0
                                           range:NSMakeRange(0, [string length])];

    for (NSTextCheckingResult *match in matches) {
        if([match addressComponents] // contains NSTextCheckingNameKey){
            // do this
        }
    }
4

2 回答 2

4

您的代码使用查找地址的数据检测器。您的字符串中没有地址。因此,数据检测器找不到任何东西。

没有用于查找名称的数据检测器。

如果您知道字符串的结构,请使用它。例如,如果您可以保证在您的示例中的名称之前总是有“空格-斜线-空格”,那么搜索它并将后面的内容作为名称。

如果你知道字符串的结构,这个问题几乎是无法解决的。

于 2014-01-27T03:45:11.977 回答
2

NSDataDetector 不支持名称检测。为此,请使用NSLinguisticTagger

于 2014-03-19T10:48:54.370 回答