Я пытаюсь добавить функцию поиска в свое приложение с помощью Parse, я написал код с UISearchController, но по какой-то причине, когда я загружаю приложение и пытаюсь выполнить поиск, ничего не работает. Мой синтаксический анализ настроен правильно, поэтому с моим кодом должно быть что-то не так!
Вот:
import UIKit
import Parse
class SearchTableViewController: UITableViewController, UISearchResultsUpdating
{
var searchResults = [String]()
var resultSearchController = UISearchController()
override func viewDidLoad()
{super.viewDidLoad()
self.resultSearchController = UISearchController(searchResultsController: nil)
self.resultSearchController.searchResultsUpdater = self
self.resultSearchController.dimsBackgroundDuringPresentation = false
self.resultSearchController.searchBar.sizeToFit()
self.tableView.tableHeaderView = self.resultSearchController.searchBar
}
override func didReceiveMemoryWarning()
{super.didReceiveMemoryWarning()
}
func query()
{
let query = PFQuery(className:"_User")
query.findObjectsInBackgroundWithBlock { (results: [PFObject]?, error: NSError?) -> Void in
if error != nil {
if let objects = results! as [PFObject]! {
for object in objects {
let userName = object.objectForKey("firstName") as! String
self.searchResults.append(userName)
self.tableView.reloadData() //<-- must reloadData()
} } }
}
// MARK: - Table view data source
func numberOfSectionsInTableView(tableView: UITableView) -> Int
{
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return searchResults.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel?.text = searchResults[indexPath.row]
return cell
}
func updateSearchResultsForSearchController(searchController: UISearchController)
{
self.searchResults.removeAll(keepCapacity: false)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
let array = (self.searchResults as NSArray).filteredArrayUsingPredicate(searchPredicate)
self.searchResults = array as! [String]
self.tableView.reloadData()
}
}
}