Одним из возможных решений может быть сохранение предопределенных значений в базе данных (Core Data), а затем в textDidChange делегате searchBar вы можете запросить базу данных для поиска списка, если данные соответствуют текущему ключевому слову serach. Полученные таким образом результаты могут быть показаны в виде таблицы с некоторым эффектом анимации, чтобы дать ощущение автоматического предложения.
Вызов веб-сервиса для textDidChange заблокирует интерфейс пользователя и не будет хорошим вариантом для продолжения. хотя эта функция более распространена в Интернете, но на устройстве я считаю первый вариант более продуктивным, чем второй.
РЕДАКТИРОВАТЬ: Ответ на вопрос, задаваемый в части редактирования вопроса
- Вам нужно поставить автоматическое предложение.
- Получение данных с сервера (с использованием веб-службы).
Теперь, чтобы обеспечить функциональность предложения адреса, например «Сид», превращающегося в Сидней, Австралия, мой ответ выше поможет вам поместить эти статические адреса в базу данных, а затем предоставит пользователю опции автоматического предложения. Во второй части вы можете сохранить последние / длинные места в базе данных, и как только пользователь завершит свой выбор, вы можете запросить веб-сервис для получения данных.
Шаги можно обобщить как ..
- Типы пользователей Syd.
- Вы запрашиваете базу данных для поиска места, которое соответствует Сиду, с помощью некоторого запроса, например place LIKE% syd%.
- Заполните таблицу автозаполнением с указанием названия места, например
Сидней, Австралия.
- Пользователь выбирает место, соответственно вы выбираете широту / долготу (извлечено
вместе с именами в приведенном выше запросе) и запросите свой веб-сервис для
получить данные для
Место = Сидни, Австралия (не требуется)
Широта = НЕКОТОРАЯ ВАЛЕ для Сиднея
Долгота - НЕКОТОРОЕ ЗНАЧЕНИЕ для Сиднея
Радиус = 5,10,15 в зависимости от логики вашего приложения
Затем сервер выберет все магазины в заданном диапазоне для определенного широты / долготы.
На стороне сервера может быть выполнена более интенсивная работа по вычислению, а на стороне клиента - меньше вызовов веб-службы, чтобы избежать задержки.