func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
{
searchBar.barTintColor = UIColor.white
let lists:Array = searchCollectionList1 as Array
// let searchPredicate = NSPredicate(format: "assetname CONTAINS[C] %@", searchText)
let searchPredicate = searchFilter(searchName: searchText) 'Constant 'searchPredicate' inferred to have type '()', which may be unexpected'
let array = (lists as NSArray).adding(searchPredicate)
filteredDataItems = array
DispatchQueue.main.async {
self.collectionView.reloadData()
}
}
发布于 2018-07-17 14:25:51
不要使用NSPredicate
,要使用原生filter
。
带有选项.caseInsensitive
的range(of ... ) != nil
与CONTAINS[C]
的作用完全相同
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
{
searchBar.barTintColor = UIColor.white
filteredDataItems = searchCollectionList1.filter{ $0.assetname.range(of: searchText, options: .caseInsensitive) != nil }
DispatchQueue.main.async {
self.collectionView.reloadData()
}
}
这里假设searchCollectionList1
和filteredDataItems
是同一类型。
https://stackoverflow.com/questions/51374253
复制相似问题