2017-03-07 2 views
-1

J'essaye d'implémenter un searchBar dans la tableView, mais j'obtiens cette erreur. Je ne peux pas comprendre comment l'enlever.iOS - searchBar, erreur

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

Cette erreur apparaît sur la ligne 5 du code et il semble que ceci: Une valeur de type plage string.index n'a pas d'emplacement membre

+0

dans la première utilisation de la ligne permettent ou var avec searchingDataArray – commando24

+0

Vous pouvez remplacer '' revenir à range.location' plage de retour = nil' –

Répondre

1

Mise à jour pour Swift 3:

-nous les lignes de 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: Délégué UISearchBar Méthodes

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

Essayez cela peut être pour vous aider:

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

https! : //github.com/codepath/ios_guides/wiki/Search-Bar-Guide –