2012-11-19 2 views
0

선택한 테이블 뷰 셀에서 NSRegularExpression 동작을 수행하려고합니다. 그러나 문제는 단일 선택된 항목에 대해 작업을 수행하는 대신 전체 배열을 검사 한 다음 웹 사이트를 제외한 모든 항목에 대해 대답을 "예"로 지정합니다 (별도의 "if"문으로 인해). 나는이 문제를 해결하려면 어떻게선택한 테이블 뷰 셀에서 NSRegularExpression 작업 수행

NSArray *array = @"http://www.apple.com/, http://www.stackoverflow.com/, http://www.test.com/, This is text, 416-555-5555, 416-123-4567, This is also text."; 
    //more code 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSIndexPath* indexPath = [tableView indexPathForCell:sideSwipeCell]; 

    NSError *error = NULL; 

    NSUInteger index = [buttons indexOfObject:button]; 
    NSDictionary* buttonInfo = [buttonData objectAtIndex:index]; 

    NSString *data = [[array objectAtIndex:indexPath.row] objectForKey:@"redirect_url"]; 

    NSRegularExpression *naNum = [NSRegularExpression regularExpressionWithPattern:@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$" options:NSRegularExpressionCaseInsensitive error:&error]; 
    NSRange naNumMatch = [naNum rangeOfFirstMatchInString:data options:0 range:NSMakeRange(0, [data length])]; 

    if ([data rangeOfString:@"http://"].location != NSNotFound) { 
     // do something. 
    } else if ((!NSEqualRanges(naNumMatch, NSMakeRange(NSNotFound, 0)))) { 
     // do something 
    } else { 
     // do something 
    } 
} 

: 여기

코드인가? 미리 감사드립니다.

답변

0

왜 제공된 indexPath를 무시하고 새로 만드시겠습니까? 그것은 거의 당신의 문제를 확실히합니다.

세 가지 경우에 일부 로그 메시지를 추가하지 않고 범위, 일치 항목 및 indexPath를 기록하면됩니다.