如何在tableview中搜索数据?
Posted
技术标签:
【中文标题】如何在tableview中搜索数据?【英文标题】:How to search data in tableview? 【发布时间】:2019-07-02 17:09:30 【问题描述】:我在本地文件中有数据,我已经将它们加载到 tableView 中,现在我想通过搜索栏搜索/过滤。
我尝试了一些我在互联网上找到的解决方案,但我不知道如何访问我的结构中的特定数据。
这是结构的一部分:
struct Model: Codable
var data: [Description]
struct Description: Codable
var id: Int
var name: String
var address: String
var city: String
var description: String
var countryId: Int
var webSite: String
var status: Int
var accountType: Int
var addDate: String
var placeGroupId: Int
var longitude: Double
var latitude: Double
var distance: Double
var working: Bool
var promotion: String
var repertoire: Repertoire
var workingHour: WorkingHour
var country: Country
var reviewNum: Int
var score: Double
var placeImgUrl: String
var model: Model?
这是来自我的 ViewController 的一些代码:
var filteredObjects = [Description]()
let searchController = UISearchController(searchResultsController: nil)
func searchBarIsEmpty() -> Bool
return searchController.searchBar.text?.isEmpty ?? true
func filterContentForSearchText(_ searchText: String, scope: String = "All")
extension ViewController: UISearchResultsUpdating
func updateSearchResults(for searchController: UISearchController)
<#code#>
我有变量模型,它是结构模型的类型。结构模型有一个变量数据,它是结构描述的类型。最后,在结构描述中,我有变量名。我的 tableView 单元格显示模型的名称 (model?.data[indexPathrow.row].name)。现在,我需要按 tableView 单元格中显示的名称进行搜索。我希望我解释清楚。非常感谢!
【问题讨论】:
【参考方案1】:假设objects
也是[Description]
,代表数据源数组
func updateSearchResults(for searchController : UISearchController)
let searchString = searchController.searchBar.text!
if searchString.isEmpty
filteredObjects.removeAll()
else
filteredObjects = objects.filter $0.name.range(of: searchString, options: .caseInsensitive) != nil
tableView.reloadData()
在表格视图中数据源方法显示objects
或filteredObjects
取决于searchController.isActive
【讨论】:
对不起,我必须按名称搜索模型。我的错,对不起。Model
没有属性name
好的。我有变量模型,它是结构模型的类型。结构模型有一个变量数据,它是结构描述的类型。最后,在结构描述中,我有变量名。我的 tableView 单元格显示模型的名称 (model?.data[indexPathrow.row].name)。现在,我需要按 tableView 单元格中显示的名称进行搜索。我希望我现在解释得更清楚了。非常感谢!
将数据源数组声明为非可选数组[Description]
,并为其赋值model.data
。其实model
与搜索和显示数据无关。
好的,我试试。再次感谢您。以上是关于如何在tableview中搜索数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在更新 tableview 时使用搜索栏对我的 NSFetchedResults 数据进行排序,而不会在 fetchedRC.performFetch() 上崩溃?更新
如何在 swift3 中使用 tableview 和 searchbarcontroller 创建范围搜索