我有一组struct
' s,每个都有标题和副标题:
struct searchItem {
var title: String
var subtitle: String
}
let itemArray: [searchItem] = [
searchItem(title: "Bob", subtitle: "Man"),
searchItem(title: "Susan", subtitle: "Woman"),
searchItem(title: "Joe", subtitle: "Man")
]
var filteredArray = [searchItem]()
每个searchItem
title
和subtitle
用于在tableViewCell
中创建tableViewController
,UISearchBar
在顶部:
我需要以某种方式根据搜索字词和itemArray
searchItem
title
和subtitle
来过滤{{1}},所以搜索字词和#34; Man"或者#34; Bob"将返回个人鲍勃。
如何做到这一点?提前谢谢!
答案 0 :(得分:2)
您可以使用filter
swift数组方法过滤数组。当您使用过滤器时,返回,其他数组项目取决于您的 searchText 。因此,您应该将搜索到的项目添加到新的filteredArray
和重新加载您的tableView
。
if let searchBarText = searchController.searchBar.text{
let searchText = searchBarText.lowercaseString
filteredArray = self. itemArray.filter({$0.title.lowercaseString.rangeOfString(searchText) != nil})
filteredArray += self.itemArray.filter({$0. subtitle.lowercaseString.rangeOfString(searchText) != nil})
tableView.reloadData()
}
答案 1 :(得分:1)
Swift 3版本:
if let searchBarText = searchController.searchBar.text{
let searchText = searchBarText.lowercaseString
filteredArray = categoryArray.filter ({$0.title.lowercased().range(of: searchText.lowercased()) != nil})
filteredArray += categoryArray.filter ({$0.sybtitle.lowercased().range(of: searchText.lowercased()) != nil})
tableView.reloadData()
}