如何使用 UISearchBar 同时按 2 个参数进行搜索

How to search by 2 parameters at the same moment using UISearchBar

我正在使用 UISearchBar 来搜索用户。用户有用户名和显示名。现在我使用这段代码通过参数 "username" 进行搜索,如何同时通过 "displayname" 进行搜索?搜索结果应包含两个参数

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()
    })
}

过滤用户时,您只需使用 'or' 逻辑运算符将这两个条件都包括在内进行检查。让您的过滤结果看起来像这样:

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