ios - Type 'NSPredicate has no subscript members' -
i trying implement search call results database. manage database print in console not access via search.
here code use :
import uikit class searchtableviewcontroller: uitableviewcontroller, uisearchresultsupdating { var searchpredicate = nspredicate() var filteredappleproducts = [string]() var resultsearchcontroller = uisearchcontroller!() var arrdataarticles: nsmutablearray! override func viewdidload() { super.viewdidload() self.searchpredicate = nspredicate(format: "self like[c] %@", resultsearchcontroller.searchbar.text!) self.resultsearchcontroller = uisearchcontroller(searchresultscontroller: nil) self.resultsearchcontroller.searchresultsupdater = self self.resultsearchcontroller.dimsbackgroundduringpresentation = false self.resultsearchcontroller.searchbar.sizetofit() self.tableview.tableheaderview = self.resultsearchcontroller.searchbar self.tableview.reloaddata() self.getallarticles() } func getallarticles() { arrdataarticles = nsmutablearray() arrdataarticles = modelbd.getinstance().getallarticles() } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } // mark: - table view data source override func numberofsectionsintableview(tableview: uitableview) -> int { // #warning incomplete implementation, return number of sections return 1 } override func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int { if self.resultsearchcontroller.active { return self.filteredappleproducts.count } else { return 0 } } override func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell { let cell = tableview.dequeuereusablecellwithidentifier("cell", forindexpath: indexpath) uitableviewcell? if self.resultsearchcontroller.active { cell!.textlabel?.text = self.filteredappleproducts[indexpath.row] } else { cell!.textlabel?.text = self.searchpredicate[indexpath.row] as! string } return cell! } func updatesearchresultsforsearchcontroller(searchcontroller: uisearchcontroller) { self.filteredappleproducts.removeall(keepcapacity: false) let searchpredicate = nspredicate(format: "self contains[c] %@", searchcontroller.searchbar.text!) let array = (self.appleproducts nsarray).filteredarrayusingpredicate(searchpredicate) self.filteredappleproducts = array as! [string] self.tableview.reloaddata() } } type 'nspredicate has no subscript members'
error appears on lines
cell!.textlabel?.text = self.searchpredicate[indexpath.row] as! string and
let array = (self.appleproducts nsarray).filteredarrayusingpredicate(searchpredicate) anyone knows how fix this?
thanks in advance time.
you cannot use instance member in constant this. in predicate suppose existence of resultsearchcontroller. instead initialize predicate in viewdidload() or during class initialization.
e.g.:
var searchpredicate: nspredicate? override func viewdidload() { super.viewdidload() self.searchpredicate = nspredicate(format: "self like[c] %@", resultsearchcontroller.searchbar.text!) [...]
Comments
Post a Comment