De su análisis de la documentación para NSTextCheckingResult
que estaba bajo la impresión de que si se encuentra ninguna coincidencia en la búsqueda NSRegularExpression
la propiedad gama de NSCheckingResult
se establecería en {NSNotFound,0}
NSCheckingResult Range ¿Propiedad no configurada en {NSNotfound, 0}?
Desde mi prueba de abajo estoy encontrando que si hay coincidencia es el rango NSCheckingResult
encontrado se establece en {0,0}
. Es un pequeño punto, pero solo quería aclarar mi comprensión de cómo funciona esto.
// REGEXPRESSION
NSString *textBuffer = @"1234567890";
NSString *pattern = @"(([A-Z]+))";
NSRegularExpression *regExp = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil];
NSTextCheckingResult *match = [regExp firstMatchInString:textBuffer options:0 range:NSMakeRange(0, [textBuffer length])];
// ERROR CHECK
if([match range].location == NSNotFound) NSLog(@"Match Not found");
NSLog(@"location: %d", [match range].location);
NSLog(@"length : %d", [match range].length);
// OUTPUT
location: 0
length : 0
EDIT: En este ejemplo NSTextCheckingResult *match
está siendo ajustado a nil
, que es probablemente la razón por la ubicación y longitud están regresando cero (mensaje a objeto nil).
if(!match) NSLog(@"Match Not Found");
lo tanto, estoy adivinando que NSNotFound
solamente se devuelve cuando hay varios grupos de captura donde representan un grupo vacío.
Sí, es debido a la coincidencia nula. '{NSNotFound, 0}' puede ser devuelto por 'rangeAtIndex:' para el grupo que no participó en la coincidencia. – hoha
@hoha si mueve su comentario a una respuesta, fuzzygoat podría aceptarlo y sacar esta pregunta de la cola Sin respuesta. –