首页 > 解决方案 > 如何使用 UISearchBar 同时搜索 2 个参数

问题描述

我正在使用 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()
    })
}

标签: swiftuisearchbar

解决方案


过滤用户时,您只需使用“或”逻辑运算符包含两个条件进行检查。使您的过滤结果看起来像这样:

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

推荐阅读