如何在tableview中搜索数据?
How to search data in tableview?
我在本地文件中有数据,我已将它们加载到 tableView 中,现在我想通过搜索栏search/filter。
我尝试了一些在 Internet 上找到的解决方案,但我不知道如何访问我的结构中的特定数据。
这是结构的一部分:
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 单元格中显示的名称进行搜索。我希望我解释清楚了。非常感谢!
假设objects
也是[Description]
并且表示数据源数组
func updateSearchResults(for searchController : UISearchController)
{
let searchString = searchController.searchBar.text!
if searchString.isEmpty {
filteredObjects.removeAll()
} else {
filteredObjects = objects.filter{ [=10=].name.range(of: searchString, options: .caseInsensitive) != nil }
}
tableView.reloadData()
}
在table查看数据源方法显示objects
或filteredObjects
取决于searchController.isActive
我在本地文件中有数据,我已将它们加载到 tableView 中,现在我想通过搜索栏search/filter。
我尝试了一些在 Internet 上找到的解决方案,但我不知道如何访问我的结构中的特定数据。
这是结构的一部分:
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 单元格中显示的名称进行搜索。我希望我解释清楚了。非常感谢!
假设objects
也是[Description]
并且表示数据源数组
func updateSearchResults(for searchController : UISearchController)
{
let searchString = searchController.searchBar.text!
if searchString.isEmpty {
filteredObjects.removeAll()
} else {
filteredObjects = objects.filter{ [=10=].name.range(of: searchString, options: .caseInsensitive) != nil }
}
tableView.reloadData()
}
在table查看数据源方法显示objects
或filteredObjects
取决于searchController.isActive