Search code examples
iosswifttableviewsearchbar

iOS - searchBar, Error


I'm trying to implement a searchBar in the tableView, but I get this error. I can not figure out how to remove it.

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    searchingDataArray = origanalArray.filter({ (text) -> Bool in
        let tmp: String = text
        let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
        return range.location != NSNotFound
    })
    if (searchingDataArray.count == 0) {
        searching = false
    } else {
        searching = true
    }
    self.tableView.reloadData()
}

This error appears on line 5 of the code and it sounds like this: Value of type range string.index has no member location


Solution

  • Updated for Swift 3:

    Use lines of code;

    // MARK:- Varirabl Declartion
    
    @IBOutlet weak var mSearchBar: UISearchBar!
    @IBOutlet weak var mTableView: UITableView!
    
    var isSearch : Bool = false
    var arrCountry = ["Afghanistan", "Algeria", "Bahrain","Brazil", "Cuba", "Denmark","Denmark", "Georgia", "Hong Kong", "Iceland", "India", "Japan", "Kuwait", "Nepal"]
    var arrFilter:[String] = []
    

    //MARK: UISearchBar Delegate Methods

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    
        if searchText.characters.count == 0 {
            isSearch = false;
            self.mTableView.reloadData()
        } else {
            arrFilter = arrCountry.filter({ (text) -> Bool in
                let tmp: NSString = text as NSString
                let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
                return range.location != NSNotFound
            })
            if(arrFilter.count == 0){
                isSearch = false;
            } else {
                isSearch = true;
            }
            self.mTableView.reloadData()
        }
    }