Cómo detectar direcciones de correo electrónico dentro de cadenas arbitrarias

Estoy usando el siguiente código para detectar un correo electrónico en la cadena. Funciona bien, excepto para tratar con el correo electrónico que tiene el prefijo de número puro, como "[email protected]". ¿Es posible superar este error de la manzana? Cualquier ayuda será apreciada!

NSString *string = @"[email protected]";
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error];
NSArray *matches = [detector matchesInString:string
                                     options:0
                                       range:NSMakeRange(0, [string length])];    
for (NSTextCheckingResult *match in matches) {
    if ([match.URL.scheme isEqualToString:@"mailto"]) {
        NSString *email = [match.URL.absoluteString substringFromIndex:match.URL.scheme.length + 1];
        NSLog(@"email :%@",email);

    }else{
        NSLog(@"[match URL] :%@",[match URL]);
    }

}

Editar: el resultado del registro es: [URL de coincidencia]:http://gmail.com

Respuestas a la pregunta(1)

Su respuesta a la pregunta