搜索栏不显示搜索结果

Posted

技术标签:

【中文标题】搜索栏不显示搜索结果【英文标题】:Search Bar Not Displaying Search Results 【发布时间】:2021-01-25 02:43:37 【问题描述】:

我的应用程序中的搜索栏无法正常工作。我已将问题缩小到方法 cellforRowAt。输入单词时无法显示搜索结果。 cellforRowAt 包含索引路径中过滤文章的信息。我该如何解决这个问题?

项目链接:https://github.com/lexypaul13/Covid-News.git

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int  //确定用户类型时应该使用什么数据源

如果是过滤

返回filteredArticles?.count ?? 0



返回文章?。计数?? 0






func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

让 cell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as!新闻TableViewCell

让新闻:文章

过滤的文章 = 文章

如果是过滤

新闻 = 过滤文章![indexPath.row]



别的

新闻 = 文章![indexPath.row]



cell.authorName.text = 过滤文章?[indexPath.row].author

cell.headLine.text = 过滤文章?[indexPath.row].title

cell.newsImage.downloadImage(来自:(self.filteredArticles?[indexPath.item].urlImage ?? "nill"))

cell.timePublication.text = filteredArticles?[indexPath.row].publishedAt



如果让 dateString = filtersArticles?[indexPath.row].publishedAt,

让日期 = indDateFormatter.date(来自:dateString)

让 formattedString = outDateFormtter.string(from: date)

cell.timePublication.text = 格式化字符串

 别的 

cell.timePublication.text = "----------"





返回单元格




func updateSearchResults(for searchController: UISearchController) 

让 searchBar = searchController.searchBar

filterContentForSearchText(searchBar.text!,文章!)



func filterContentForSearchText(_ searchText:String ,_ category: [文章])

filtersArticles = 文章?.filter( (article:Articles) -> Bool in

返回 article.description.lowercased().contains(searchText.lowercased())



)

table_view.reloadData()




 

【问题讨论】:

【参考方案1】:

代码中的问题是return article.description.lowercased().contains(searchText.lowercased()) 行 在这一行中,article.description 给出了整个对象的描述,是 NSObjectProtocol 的一个方法。

因此,对于这种情况,您需要知道需要搜索哪个项目才能获得过滤结果。我查看了代码并知道Articles 包含标题作为参数。您可以使用它来过滤您的搜索

所以代码应该改为return (article.title?.lowercased().contains(searchText.lowercased()) ?? false)

【讨论】:

你能解释一下为什么我应该描述没有过滤结果。 每个 NSObject 都有一个名为 description 的属性。甚至 UIViewController 的基类也是 NSObject。这个描述实际上定义了有时在该对象的信息内部的内存布局。因此,如果要过滤,则无法使用描述进行过滤,因为它是整个对象信息,而不是对象的标题或完整描述。您可以在控制台中打印描述并自己查看。

以上是关于搜索栏不显示搜索结果的主要内容,如果未能解决你的问题,请参考以下文章

输入一个字母时,搜索栏不显示所有相关结果

搜索栏不返回任何结果

UITableView 中的搜索栏不显示单元格标签中的文本

搜索栏不一致错误(Swift)?

UISearchController 搜索栏不隐藏导航栏

如何使搜索栏不与表格视图一起滚动? [复制]