我有一个由Core Data填充的tableview,其中包含多个动态部分,我想使用UISearchController搜索特定记录。我发现的每个教程都说使用了一个获取结果数组,并结合了一个过滤后的数组来显示结果,但这对维护我的tableview部分来说很痛苦。
我完全可以使用的代码,因为每次用户在搜索字段中输入时我只会执行一次获取,但我发现这对资源来说更贵。
那么在维护我的tableview部分时如何在数组上实现过滤器呢?数组数组?
我目前的代码:
//MARK: Search Deletegate Methods
func updateSearchResultsForSearchController(searchController: UISearchController) {
let searchText = self.searchController.searchBar.text
let selectedScopeButtonIndex = self.searchController.searchBar.selectedScopeButtonIndex
self.filterContentForSearch(searchText, scope: selectedScopeButtonIndex)
self.tableView.reloadData()
}
func filterContentForSearch(searchText: String, scope: Int)
{
println("Fired")
//Way too expensive for resources
var fetchRequest = NSFetchRequest()
fetchRequest = NSFetchRequest(entityName: "FoodItem")
let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
let mealDescriptor = NSSortDescriptor(key: "meal", ascending: true)
fetchRequest.sortDescriptors = [mealDescriptor,sortDescriptor]
//Predicate
if searchText != ""
{
let namePredicate = NSPredicate(format: "name CONTAINS[cd] %@", searchText)
fetchRequest.predicate = namePredicate
}
fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: "meal", cacheName: nil)
fetchedResultsController.delegate = self
fetchedResultsController.performFetch(nil)
}