Sqlite.swift живой поиск

Я хочу сделать живой поиск в БД.

Допустим, я хочу выполнить поиск по компаниям, и у меня есть следующая информация о столбце с названием компаний.

  • Фейсбук
  • FastCompany
  • Фейсбук
  • Google
  • Майкрософт

У меня есть текстовое поле, которое вызывает функцию редактирования.

   @IBAction func searching(sender: AnyObject) {
        tempstring = "%"+searchBar.text+"%"
        println(tempstring)

         user = user.select(name)
            .filter(like(tempstring, name))
            .limit(30, offset: 0)
        collectionView?.reloadData()
}

Вроде работает, если я начну вводить "fa", появится (Facebook, Facebook и FastCompany)

Если я продолжу вводить "fac", появится (Facebook, Facebook)

Но когда я удаляю последний символ «c» из окна поиска (снова оставляя его в «fa»), запрос ничего не отображает.

Любые идеи о том, как я могу это решить.


person danielsalare    schedule 23.07.2015    source источник


Ответы (1)


Я думаю, что ваша проблема возникает из-за перезаписи объекта user при каждом поиске. Это нормально, пока вы двигаетесь только вперед, но когда вы идете назад, как вы это делали, запрос искажается.

Вместо этого попробуйте добавить свойство currentQuery в свой контроллер представления с представлением коллекции в нем и установить его в свой оператор user.select.

currentQuery = user.select(name)
        .filter(like(tempstring, name))
        .limit(30, offset: 0)

Затем используйте объект currentQuery для отображения результатов. Таким образом, независимо от того, что вы ищете, оно будет соответствовать всему.

person mbottone    schedule 23.07.2015
comment
Великолепно! Большое спасибо. - person danielsalare; 23.07.2015