Ich versuche, eine Suche zu implementieren, die ihre Ergebnisse zu einer Datenbank aufrufen. Es gelingt mir, die Datenbank in der Konsole zu drucken, aber nicht über die Suche darauf zuzugreifen. HierTyp 'NSPredate hat keine tiefgestellten Mitglieder'
ist der Code, den ich verwenden:
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 any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the 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) as 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 as NSArray).filteredArrayUsingPredicate(searchPredicate)
self.filteredAppleProducts = array as! [String]
self.tableView.reloadData()
}
}
Typ 'NSPredicate hat keine Index Mitglieder
Fehler auf den Linien erscheint
cell!.textLabel?.text = self.searchPredicate[indexPath.row] as! String
und
let array = (self.appleProducts as NSArray).filteredArrayUsingPredicate(searchPredicate)
Weiß jemand, wie man das repariert?
Vielen Dank im Voraus für Ihre Zeit.
Sie sollten nicht Ihre ursprüngliche Antwort bearbeiten, da nun der Kontext der Antwort ist weg. – ff10