Crowl
Crowl

Reputation: 45

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

Upvotes: 0

Views: 905

Answers (2)

Kiran Jadhav
Kiran Jadhav

Reputation: 3317

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()
    }
}

Upvotes: 2

payal solanki
payal solanki

Reputation: 34

Try this may be help for you :

  func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

    filtered = data.filter({ (text) -> Bool in
        let tmp: NSString = text
        let range = tmp.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch)
        return range.location != NSNotFound
    })
    if(filtered.count == 0){
        searchActive = false;
    } else {
        searchActive = true;
    }
    self.tableView.reloadData()
}

Upvotes: 0

Related Questions