0

NSRegularExpression選択したテーブルビュー セルでアクションを実行したい。ただし、問題は、選択された単一のアイテムに対してアクションを実行する代わりに、配列全体をチェックし、Web サイトを除くすべてのアイテムで「はい」という回答を空白にすることです (別の「if」ステートメントのため)。

コードは次のとおりです。

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

これを修正するにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1

0

提供された indexPath を無視して、新しいものを作成するのはなぜですか? それはほぼ確実にあなたの問題です。

そうでない場合は、3 つのケースにいくつかのログ メッセージを追加し、範囲、一致したもの、および indexPath をログに記録します。

于 2012-11-19T22:31:47.790 に答える