NSDataDetector用于检测字符串中的名称

时间:2014-01-27 02:56:52

标签: ios objective-c nsdatadetector

我一直在努力理解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
        }
    }

2 个答案:

答案 0 :(得分:4)

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

没有数据检测器可以找到名称。

如果你知道字符串的结构,那就用它吧。例如,如果您可以保证在示例中名称前面始终存在“space-slash-space”,那么请搜索该名称,并将以下内容作为名称。

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

答案 1 :(得分:1)

NSDataDetector不支持名称检测。请改用此NSLinguisticTagger