Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 什么';用分区过滤核心数据填充的TableView最便宜的方法是什么?_Ios_Core Data_Nsfetchedresultscontroller - Fatal编程技术网

Ios 什么';用分区过滤核心数据填充的TableView最便宜的方法是什么?

Ios 什么';用分区过滤核心数据填充的TableView最便宜的方法是什么?,ios,core-data,nsfetchedresultscontroller,Ios,Core Data,Nsfetchedresultscontroller,我有一个由多个动态部分的核心数据填充的tableview,我想使用UISearchController来搜索特定的记录。我找到的每个教程都说使用一个获取结果的数组,再加上一个过滤数组来显示结果,但这对于维护我的tableview部分来说是一件痛苦的事情 我的代码完全可以工作,因为每次用户在搜索字段中键入内容时,我都会执行一次获取,但我意识到这对于资源来说是比较昂贵的 那么,在维护tableview部分的同时,如何在阵列上实现过滤器呢?数组的数组 我当前的代码: //MARK: Search De

我有一个由多个动态部分的核心数据填充的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)
}