UISearchbar фильтрация результатов - PullRequest
0 голосов
/ 07 февраля 2011

У меня есть UISearchBar, где пользователь может вводить текст. По сути это динамический поиск по названию компании. (загружается из ext API), например если пользователь набрал "MIC", он покажет AMIC, BMIC, CMIC, ... MICROSOFT

Я использую код ниже

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

Мой вопрос; 1. Это лучший подход для фильтрации? Т.е. для имени компа я должен использовать Имя начинается с ИЛИ Имя содержит, что является текущим подходом. 2. Поиск не работает для пробелов. например не возвращает результатов для "ИМЯ КОМПАНИИ"

Я буду добавлять комментарии для дополнительной информации, когда получаю ответы. Пожалуйста, предложите.

1 Ответ

1 голос
/ 07 февраля 2011

Имея только одну строку кода, трудно сказать, является ли ваша поисковая реализация "лучшим подходом" - предоставление дополнительной информации было бы полезно.Например, мы даже не знаем, откуда берется переменная sTemp или что она содержит.

При этом говорится:

  1. Если ваши результаты действительно получены из внешнего источникаAPI, он может обеспечить ускорение отправки строки поиска в этот API и сделать так, чтобы поиск выполнялся ближе к источнику данных - если вы кешируете и сканируете строку во всем наборе результатов, то в качестве набора данных будет наблюдаться некоторое снижение производительностиразмер увеличивается.Если вы настроены выполнять поиск локально, тогда да, поиск без учета регистра, вероятно, является лучшим вариантом.
  2. Ожидаете ли вы результаты для "ИМЯ КОМПАНИИ"?Я собираюсь предположить, что у вас есть какая-то компания под названием «ИМЯ КОМПАНИИ», и вы хотите, чтобы ваш сокращенный поиск «ИМЯ КОМПАНИИ» попал в «ИМЯ КОМПАНИИ».Тогда ваша проблема заключается в том, что вы выполняете сравнение всей строки, а не ее частей - «ИМЯ КОМПАНИИ» не содержит подстроки «ИМЯ КОМП», даже в сравнении без учета регистра.Вместо этого вам нужно разделить строку поиска по пробелам, а затем проверить для каждой компании, содержит ли имя все подстроки вашего запроса.В этом примере «ИМЯ КОМПАНИИ» содержит обе подстроки «КОМП» и «ИМЯ», поэтому они будут совпадать.
...