UIsearchbar поиск электронной почты и имени пользователя - PullRequest
0 голосов
/ 01 мая 2019

У меня есть UIsearchbar в моем приложении.Панель UIsearch позволяет пользователю осуществлять поиск по имени пользователя.нам нужно добавить еще одну функцию - разрешить поиск по имени пользователя и адресу электронной почты.Я хочу спросить, как я могу изменить свою функцию поиска для поиска по имени пользователя и электронной почте?

public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    filteredUsers = users.filter({( user : User) -> Bool in
        print(searchText)
        return user.username.lowercased().contains(searchText.lowercased())

    })
    tableViewUsers.reloadData()
}

Ответы [ 2 ]

3 голосов
/ 01 мая 2019

Просто OR оба предиката.Более эффективный API, чем lowercased().contains(), равен range(of:options: .caseInsensitive).

public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    filteredUsers = users.filter { 
        $0.username.range(of: searchText, options: .caseInsensitive) != nil ||
        $0.email.range(of: searchText, options: .caseInsensitive) != nil
    }
    tableViewUsers.reloadData()
}

Другие варианты, которые можно комбинировать: diacriticInsensitive и anchored

2 голосов
/ 01 мая 2019

Вы можете попробовать

filteredUsers = users.filter { $0.username.lowercased().contains(toSearch)
                               || $0.email.lowercased().contains(toSearch) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...