Как искать по 2 параметрам одновременно, используя UISearchBar - PullRequest
0 голосов
/ 31 мая 2019

Я использую UISearchBar для поиска пользователей.У пользователя есть имя пользователя и отображаемое имя.Теперь я использую этот код для поиска по параметру "имя пользователя", как искать по "отображаемому имени" тоже, в то же время?Результат поиска должен содержать оба параметра

var timer: Timer?
var filteredUsers = [User]()
var users = [User]()
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    timer?.invalidate()
    timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: false, block: { [weak self] (timer) in
        if searchText.isEmpty {
            self?.filteredUsers = (self?.users)!
        } else {
            self?.filteredUsers = (self?.users.filter { (user) -> Bool in
                return user.username.lowercased().contains(searchText.lowercased())
                })!
        }
        self?.tableView?.reloadData()
    })
}

1 Ответ

1 голос
/ 31 мая 2019

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

self?.filteredUsers = (self?.users.filter { (user) -> Bool in
    return (
        user.username.lowercased().contains(searchText.lowercased()) ||
        user.displayname.lowercased().contains(searchText.lowercased())
    )
})!
...