2012-02-09 25 views
6

Từ nhìn vào tài liệu cho NSTextCheckingResult Tôi đã theo ấn tượng rằng nếu không phù hợp trong một tìm kiếm NSRegularExpression đã được tìm thấy thuộc tính phạm vi cho NSCheckingResult sẽ được thiết lập để {NSNotFound,0}NSCheckingResult Range Thuộc tính không được đặt thành {NSNotfound, 0}?

Từ thử nghiệm của tôi dưới đây tôi thấy rằng nếu không phù hợp là được tìm thấy NSCheckingResult phạm vi được đặt thành {0,0}. Đó là một điểm nhỏ, nhưng tôi chỉ muốn làm rõ sự hiểu biết của tôi về cách thức hoạt động của nó.

// 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: Trong ví dụ này NSTextCheckingResult *match đang được thiết lập để nil, mà có lẽ là lý do tại sao vị trí và thời gian đang quay trở lại không (thông điệp tới đối tượng nil).

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

Do đó, tôi đoán rằng NSNotFound chỉ được trả lại khi có nhiều nhóm chụp nơi nhóm đại diện cho nhóm trống.

+0

Có đó là do kết quả phù hợp. '{NSNotFound, 0}' có thể được trả về bởi 'rangeAtIndex:' cho nhóm không tham gia vào trận đấu. – hoha

+0

@hoha nếu bạn di chuyển nhận xét của mình thành câu trả lời, thì fuzzygoat có thể chấp nhận câu trả lời và chuyển câu hỏi này ra khỏi hàng đợi chưa được trả lời. –

Trả lời

2

Có đó là do kết quả phù hợp. {NSNotFound, 0} có thể được trả về bởi rangeAtIndex: cho nhóm không tham gia trận đấu.

Các vấn đề liên quan