带有核心数据的 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)的主要内容,如果未能解决你的问题,请参考以下文章