swift - 如何使用 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()
})
}
解决方案
过滤用户时,您只需使用“或”逻辑运算符包含两个条件进行检查。使您的过滤结果看起来像这样:
self?.filteredUsers = (self?.users.filter { (user) -> Bool in
return (
user.username.lowercased().contains(searchText.lowercased()) ||
user.displayname.lowercased().contains(searchText.lowercased())
)
})!
推荐阅读
- c# - 关于适当数据结构的建议
- anylogic - AnyLogic 有没有办法在 GIS 地图中显示代理链接?
- java - Spring工具套件未显示创建方法是什么原因
- python - 如何禁用组合框中的特定索引/es或项目/s?
- node.js - 我需要管理员权限才能移动文件(node.js)
- javascript - Wordpress - .js 文件加载但什么也不做
- c - while 循环和 getchar() - 大输入
- java - 在没有 Main 方法的 Java 类库中从文件中读取数据
- void - 我如何证明依赖类型语言中的基本不等式
- java - Java Multipart 文件到 blob 然后返回到 Image 有大量随机字符