UIsearchbar搜索电子邮件和用户名

时间:2019-05-01 16:24:43

标签: ios swift list search

我的应用程序视图中有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()
}

2 个答案:

答案 0 :(得分:3)

OR都是两个谓词。比lowercased().contains()更有效的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

答案 1 :(得分:2)

您可以尝试

filteredUsers = users.filter { $0.username.lowercased().contains(toSearch)
                               || $0.email.lowercased().contains(toSearch) }