带有核心数据的 TableView 中的搜索栏(使用 Swift)

Posted

技术标签:

【中文标题】带有核心数据的 TableView 中的搜索栏(使用 Swift)【英文标题】:Search Bar in a TableView with Core Data (using Swift) 【发布时间】:2015-08-26 12:19:24 【问题描述】:

我正在使用 Core Data 制作一个 TableViewController。事实上,用户可以向 Table View 添加新项目,这些项目保存在 Core Data 中。一切正常,但是当我添加 搜索栏 时,我被阻止了。

我添加了一个搜索栏,但是当我在模拟器中运行应用程序时,下面的这个功能会产生错误。

func updateSearchResultsForSearchController(searchController: UISearchController,)

    filteredTableData.removeAll(keepCapacity: false)
    let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text)
    let array = (series as NSArray).filteredArrayUsingPredicate(searchPredicate)
    filteredTableData = array as! [String]

    self.tableView.reloadData()

我得到的错误是“以 NSException 类型的未捕获异常终止

PS:我使用 Xcode 6.3.2,所有代码都在 Swift 中。

【问题讨论】:

使用exception breakpoint,它可能会帮助您了解问题所在 【参考方案1】:

尝试以下方法:

func updateSearchResultsForSearchController(searchController: UISearchController) 
    var request = NSFetchRequest(entityName: "Serie")
    filteredTableData.removeAll(keepCapacity: false)
    let searchPredicate = NSPredicate(format: "SELF.infos CONTAINS[c] %@", searchController.searchBar.text)
    let array = (series as NSArray).filteredArrayUsingPredicate(searchPredicate)

    for item in array
    
        let infoString = item.infos
        filteredTableData.append(infoString)
    

    self.tableView.reloadData()

【讨论】:

非常感谢!你让我开心;) 请注意,在较大的数据集上,在 updateSearchResultsForSearchController 中搜索和更新您的 UI 并不总是一个好主意。

以上是关于带有核心数据的 TableView 中的搜索栏(使用 Swift)的主要内容,如果未能解决你的问题,请参考以下文章

带有字典数组的搜索栏

核心数据项目中的搜索栏

使用 tableview 中的搜索栏搜索数据

双击需要使用搜索栏选择 TableView 项目

标签栏视图中的核心数据

使用swift3在tableview中搜索栏和部分