0

我的应用视图中有 UIsearchbar。UIsearchbar 允许用户按用户名搜索。我们需要再添加一项功能是允许通过用户名和电子邮件地址进行搜索。我想问我如何修改我的搜索功能来搜索用户名和电子邮件?

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

2 回答 2

3

只是OR两个谓词。比lowercased().contains()is更高效的 API 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()
}

其他可以组合的选项是diacriticInsensitiveanchored

于 2019-05-01T16:56:21.430 回答
2

你可以试试

filteredUsers = users.filter { $0.username.lowercased().contains(toSearch)
                               || $0.email.lowercased().contains(toSearch) }
于 2019-05-01T16:27:52.470 回答