If I use simple array in UISearchBar
, it is working fine.
But when I use Multidimensional Array
in UISearchBar
, it is not working.
My code is bellow
class ViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate{
@IBOutlet weak var seachBar: UISearchBar!
@IBOutlet weak var tableView: UITableView!
var serachingArray = [[String:AnyObject]]();
var seraching:Bool = false
var originalArray = [
["name":"Enamul Haque" as AnyObject ,"address":"28 top kana" as AnyObject],
["name":"Raque" as AnyObject ,"address":"39 Alo kana" as AnyObject],
["name":"Enamul" as AnyObject ,"address":"D/28 kana" as AnyObject]
]
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
seachBar.delegate = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if(seraching == true){
return serachingArray.count
}else{
return originalArray.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CustomCell
if(seraching == true){
cell.tv_name.text = serachingArray[indexPath.row]["name"] as! String
}else{
cell.tv_name.text = originalArray[indexPath.row]["name"] as! String
}
return cell
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
print("searchText",searchText)
serachingArray = originalArray.filter({ (text) -> Bool in
let temp:NSString = text as! NSString
var range = temp.range(of: searchText,options:NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound
})
if(serachingArray.count == 0){
seraching = false
}else{
seraching = true
}
self.tableView.reloadData();
}
}
How to assign original array to search array? Please suggest .