Для свойства диапазона NSCheckingResult не задано значение {NSNotfound, 0}?

При просмотре документации для NSTextCheckingResult у меня сложилось впечатление, что если в поиске NSRegularExpression не найдено совпадений, свойство диапазона для NSCheckingResult ] будет установлено значение {NSNotFound, 0}

Из моего теста ниже я обнаружил, что если совпадение не найдено, диапазон NSCheckingResult устанавливается на {0,0} . Это мелочь, но я просто хотел прояснить свое понимание того, как это работает.

// 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

РЕДАКТИРОВАТЬ: В этом примере NSTextCheckingResult * match устанавливается равным nil , вероятно, поэтому местоположение и длина возвращают ноль (сообщение для объекта nil).

if(!match) NSLog(@"Match Not Found");

Поэтому я предполагаю, что NSNotFound возвращается только при наличии нескольких групп захвата, где он представляет собой пустую группу.

6
задан Alan Moore 10 February 2012 в 20:38
поделиться