Как реализовать поиск контента в iPhone? - PullRequest
0 голосов
/ 30 июля 2011

Я пытаюсь реализовать поиск контента в iPhone с помощью UISearchBar, мой код такой, как показано ниже.

- (void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)searchText {
    if([tableData count])
        [tableData removeAllObjects];

    //dataArray contains array of strings
         //tableData should containg arrow of strings as a serch result

    NSRange range = {0, [searchText length]};

    for(int i=0; i<[dataArray count]; ++i)
    {
        NSString *name = [dataArray objectAtIndex:i];

        if([name compare:searchText options:NSCaseInsensitiveSearch range:range] == NSOrderedSame)
            [tableData addObject:[dataArray objectAtIndex:i]];
    }
    [theTableView reloadData];
}

Я принимаю dataArray в качестве источника строк, а затем я хочу найти некоторый контент в каждой строке, а затем мне нужно сохранить эти строки, содержащие текст для поиска, в массиве tableData.

Пишите сейчас Я получаю только эти строки, так как результат поиска в начальном тексте совпадает, как если бы в dataArray было 3 объекта: 1. Индия, 2. Китай, 3. Америка и я ищем "в" тогда он должен показывать Индию и Китай, но только Индию, потому что «В» начинает наполнять Индию.

Подскажите, пожалуйста, как добиться требуемого результата.

1 Ответ

1 голос
/ 30 июля 2011

Для поиска в любом месте строки вам нужно проверить всю строку, чтобы увидеть, появляется ли где-нибудь searchTest:

NSRange titleResultsRange = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];

if (titleResultsRange.length > 0)
    [tableData addObject:name]; // or [tableData addObject:[dataArray objectAtIndex:i]];
...