使用UISearchResultsUpdating与NSMutableArray Xcode 7和Swift

时间:2016-06-13 21:57:06

标签: arrays swift nspredicate uisearchresultscontroller

我有一个NSMutableArray,它包含我想用UISearchResultsUpdating搜索该数据的数据。使用函数updateSearchResultsForSearchController中的代码,一切正常。但是有一个问题,如果我键入一个字母,任何字母,没有tableviewcell弹出。它只是空白,它不会搜索任何东西。对此有何帮助?

两个重要的变量。

NSMutubaleArray变量

var toDoItems = NSMutableArray()

代码

中的另一个有用变量
var filteredAppleProducts = [String]()

这是我的updateSearchResultsForSearchController函数

func updateSearchResultsForSearchController(searchController: UISearchController)
{
    self.filteredAppleProducts.removeAll(keepCapacity: false)                

    let searchPredicate = NSPredicate(format: "title CONTAINS[c] %@", searchController.searchBar.text!)
    let array = (toDoItems as NSArray).filteredArrayUsingPredicate(searchPredicate)
    self.filteredAppleProducts = array as! [String]

    tbl!.reloadData()
}

如果有任何帮助,这里也是我的CellForRowatIndexPath以及我的numberOfRowsInSecction。

的cellForRowAtIndexPath

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
    UITableViewCell{

    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableView

    if (self.resultSearchController.active)
    {
        cell.lbl.text = self.filteredAppleProducts[indexPath.row]                
        return cell
    }
    else
    {
        let toDoItem: NSDictionary = toDoItems.objectAtIndex(indexPath.row) as! NSDictionary
        cell.lbl.text = toDoItem.objectForKey("itemTitel") as? String                
        return cell            
    }            
}

numberOfRowsInSection

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{

    if (self.resultSearchController.active)
    {
        return self.filteredAppleProducts.count
    }
    else
    {            
        return toDoItems.count            
    }        
}

0 个答案:

没有答案