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

Ios NSDataDetector用于检测字符串中的名称,ios,objective-c,nsdatadetector,Ios,Objective C,Nsdatadetector,我一直在努力理解NSDataDetector类。我读过文档,就是不懂。我在Xcode上做的每件事都告诉我有一个错误 我觉得这次尝试可能是对的。 如何编写一个简单的基础程序来查找字符串中的名称?< /P> NSError *error = nil; NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeAddress error:&error]; NSStrin

我一直在努力理解
NSDataDetector
类。我读过文档,就是不懂。我在Xcode上做的每件事都告诉我有一个错误

我觉得这次尝试可能是对的。 如何编写一个简单的基础程序来查找字符串中的名称?< /P>
 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
        }
    }

您的代码使用一个查找地址的数据检测器。您的字符串中没有地址。因此,数据检测器什么也找不到

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

如果您知道字符串的结构,那么就使用它。例如,如果您可以保证名称前始终有“空格-斜杠-空格”,如您的示例所示,则搜索该名称并将后面的内容作为名称


如果您不知道字符串的结构,那么这个问题几乎无法解决。

您的代码使用一个数据检测器来查找地址。您的字符串中没有地址。因此,数据检测器什么也找不到

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

如果您知道字符串的结构,那么就使用它。例如,如果您可以保证名称前始终有“空格-斜杠-空格”,如您的示例所示,则搜索该名称并将后面的内容作为名称


如果您不知道字符串的结构,那么这个问题几乎无法解决。

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

NSDataDetector不支持名称检测。请使用此选项。

请在末尾添加一个带问号的句子。好了,我的好先生。数据检测器将查找地址或电话号码,而不是姓名。你有一个有效的名字列表吗,或者你知道一个名字总是跟在电话号码+斜杠或者类似的东西后面吗?我将以类似名片的布局获得我的信息,所以很难说是否会有一致的模式。我想有一个方法,我可以传递一个NSString,它将检测姓名。请在末尾包含一个带问号的句子。好了,我的好先生。数据检测器将查找地址或电话号码,而不是姓名。你有一个有效的名字列表吗,或者你知道一个名字总是跟在电话号码+斜杠或者类似的东西后面吗?我将以类似名片的布局获得我的信息,所以很难说是否会有一致的模式。我希望有一个方法,我可以将NSString传递到其中,它将检测名称。