gpt4 book ai didi

ios - 如何在模型类中过滤数据并在表格 View 中按字母而不是单词准确显示?

转载 作者:搜寻专家 更新时间:2023-10-31 23:07:31 26 4
gpt4 key购买 nike

在这里,我需要对显示在表格 View 中的模型类数据进行本地搜索,我尝试实现对我成功放置的数据的搜索,但搜索应该像我输入第一个字母时应该过滤的那样取决于第一个字母,而不是所有对象中的第一个字母

例如,在品牌名称中,我有 Fastrack、Microsoft、Dell、apple、fila

如果我输入 f 那么它应该只显示 fastrackfila 但它显示 fastrack,filaMicrosoft 其中包含 f

但我需要当第一个字母应该等于 f 那么它应该只显示 fastback 和文件而不是 Microsoft,如果第二个字母等于任何其他单词那么它应该显示过滤结果

这是我的代码

 var bannerModel = [BrandBanners]()
var searchActive : Bool?
var filteredData = [BrandBanners]()

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchActive == true {
return filteredData.count
}
else {
return bannerModel.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! superBrandTableViewCell
if searchActive == true {
cell.brandImageView.kf.indicatorType = .activity
let item = filteredData[indexPath.row]
if URL(string: (item.brandImageforMobile)!) != nil {
let resource = ImageResource(downloadURL: URL(string: (item.brandImageforMobile)!)!, cacheKey: item.brandImageforMobile)
cell.brandImageView.kf.setImage(with: resource, placeholder: nil, options: nil, progressBlock: nil, completionHandler: nil)
}
else {
cell.brandImageView.image = #imageLiteral(resourceName: "placeholder")
}
cell.activityIndicator.stopAnimating()
self.activityIndicator.stopAnimating()
}
else {
cell.brandImageView.kf.indicatorType = .activity
let item = bannerModel[indexPath.row]
if URL(string: (item.brandImageforMobile)!) != nil {
let resource = ImageResource(downloadURL: URL(string: (item.brandImageforMobile)!)!, cacheKey: item.brandImageforMobile)
cell.brandImageView.kf.setImage(with: resource, placeholder: nil, options: nil, progressBlock: nil, completionHandler: nil)
}
else {
cell.brandImageView.image = #imageLiteral(resourceName: "placeholder")
}
cell.activityIndicator.stopAnimating()
self.activityIndicator.stopAnimating()
}
return cell
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

if searchBar.text == nil || searchBar.text == "" {
self.filteredData = self.bannerModel
} else {
var lowerCase = searchBar.text!
self.filteredData = bannerModel.filter({($0.brand?.lowercased().contains(lowerCase.lowercased()))!})
}
self.searchActive = true
brandTableView.reloadData()
}

最佳答案

你应该使用hasPrefix方法来实现这个

例子

struct User {
var userName : String = ""
var password : String = ""
}



var array = [User.init(userName:"Test",password:"123456"),User.init(userName:"TEMP",password:"123456"),User.init(userName:"Prashant",password:"123456"),User.init(userName:"Test",password:"123456")]

array = array.filter{$0.userName.hasPrefix("T")} // Observe hasPrefix instead of contains
print(array)

为您的代码

self.filteredData = bannerModel.filter({($0.brand?.lowercased().hasPrefix(lowerCase.lowercased()))!})

类型安全编辑

    self.filteredData = bannerModel.filter({($0.brand ?? "").lowercased().hasPrefix("H".lowercased())}

希望对你有帮助

关于ios - 如何在模型类中过滤数据并在表格 View 中按字母而不是单词准确显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49356994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com