iPhone SDK - TableSearch - поиск всех слов, а не только первое - PullRequest
4 голосов
/ 12 июля 2009

Я играю с примером приложения TableSearch от Apple.

В своем приложении у них есть массив продуктов Apple. Есть один ряд с «iPod touch». При поиске «touch» результаты не отображаются.

Может ли кто-нибудь помочь мне сделать все слова в каждой строке доступными для поиска? Таким образом, результаты будут найдены при поиске «iPod», но также и по ключевому слову «touch».

Приветствие.

1 Ответ

14 голосов
/ 12 июля 2009

Ниже приведен соответствующий код в методе filterContentForSearchText:scope: в MainViewController.m:

NSComparisonResult result = [product.name compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame)
{
    [self.filteredListContent addObject:product];
}

Сравнивает первые n символов (указанных параметром диапазона), игнорируя регистр и диакритические знаки каждой строки, с первыми n символами текущей строки поиска, где n - длина текущей строки поиска.

Попробуйте изменить код на следующее:

NSRange result = [product.name rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
if (result.location != NSNotFound)
{
    [self.filteredListContent addObject:product];
}

Поиск в каждой строке текущей строки поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...