**注意:两个不同的数组TopicTitle和TopicDesc **
我想按TopicTitle过滤数据,并且工作正常
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredTitleArray = searchText.isEmpty ? titleArray : titleArray.filter { title -> Bool in
return title.contains(searchText)
}
tableView.reloadData()
}
struct Topic {
let title, desc : String
}
并声明(数据源)数组
var topicArray = [Topic]() var filteredArray = [Topic]()
然后过滤器
filteredArray = searchText.isEmpty ? topicArray : topicArray.filter { topic -> Bool in return topic.title.range(of: searchText, options: .caseInsensitive) != nil) || topic.desc.range(of: searchText, options: .caseInsensitive) != nil }
range(of
语法的好处是不区分大小写的搜索能力。