搜索功能逻辑无法正常工作
Search functionality logic is not working properly
这是我的单行搜索功能代码,它没有正确过滤结果。任何人都可以让我知道我必须更改代码以显示我正在使用文本的前三个字符搜索的数组元素。
对于我输入的第一个字符,它正在显示结果。但是输入第二个和第三个元素没有显示任何结果
搜索功能逻辑:
searchFruit = data.filter{[=10=].range(of: textSearched, options: [.caseInsensitive, .anchored]) != nil}
试试这个:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var searchBar: UISearchBar!
var data = ["apple","bananna","dragon fruit", "mango","pineapple"]
var searchFruit = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
tableView.delegate = self
tableView.dataSource = self
searchBar.delegate = self
searchFruit = data
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return searchFruit.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
cell?.textLabel?.text = searchFruit[indexPath.row]
return cell!
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchFruit = (searchText.isEmpty) ? self.data : self.data.filter({ (searchValue) -> Bool in
return searchValue.range(of: searchText, options: .caseInsensitive) != nil
})
tableView.reloadData()
}
}
这是我的单行搜索功能代码,它没有正确过滤结果。任何人都可以让我知道我必须更改代码以显示我正在使用文本的前三个字符搜索的数组元素。
对于我输入的第一个字符,它正在显示结果。但是输入第二个和第三个元素没有显示任何结果
搜索功能逻辑:
searchFruit = data.filter{[=10=].range(of: textSearched, options: [.caseInsensitive, .anchored]) != nil}
试试这个:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var searchBar: UISearchBar!
var data = ["apple","bananna","dragon fruit", "mango","pineapple"]
var searchFruit = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
tableView.delegate = self
tableView.dataSource = self
searchBar.delegate = self
searchFruit = data
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return searchFruit.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
cell?.textLabel?.text = searchFruit[indexPath.row]
return cell!
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchFruit = (searchText.isEmpty) ? self.data : self.data.filter({ (searchValue) -> Bool in
return searchValue.range(of: searchText, options: .caseInsensitive) != nil
})
tableView.reloadData()
}
}