Ios 类(Swift 3)数组中的筛选结果
在Ios 类(Swift 3)数组中的筛选结果,ios,arrays,swift,uitableview,Ios,Arrays,Swift,Uitableview,在类中 class Objects { var number: Int! var name: String! init(number: Int, name: String) { self.number = number self.name = name } } 在viewController var allObjects = [Objects]() var inSearchMode = fals
类中
class Objects {
var number: Int!
var name: String!
init(number: Int, name: String) {
self.number = number
self.name = name
}
}
在viewController
var allObjects = [Objects]()
var inSearchMode = false
@IBOutlet weak var searchBar: UISearchBar!
override func viewDidLoad() {
super.viewDidLoad()
searchBar.delegate = self
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! Cell
if inSearchMode {
let fill: Objects!
fill = filteredObject[indexPath.row]
cell.configureCell(fill)
} else {
let fill: Objects!
fill = allObjects[indexPath.row]
cell.configureCell(fill)
return cell
}
}
return UITableViewCell()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if inSearchMode {
return filteredObject.count
}
return allObjects.count
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchBar.text == nil || searchBar.text == "" {
inSearchMode = false
tableView.reloadData()
view.endEditing(true)
} else {
inSearchMode = true
var lowerCase = Int(searchBar.text!)
filteredObject = allObjects.filter({$0.number == lowerCase})
tableView.reloadData()
print(filteredObject)
}
}
我想有一个搜索栏,过滤和显示只有一个结果,其中包含我们正在寻找的号码。我考虑过使用contains
并将我们从搜索栏输入的数字输入
我设法将一个对象放入
filteredObject
,但它不会显示在tableView
中,我将使用计算属性驱动tableView;此属性是所有对象或筛选对象:
我将使用计算属性来驱动tableview;此属性是所有对象或筛选对象:
请仔细查看代码的这一部分:
if inSearchMode {
let fill: Objects!
fill = filteredObject[indexPath.row]
cell.configureCell(fill)
} else {
let fill: Objects!
fill = allObjects[indexPath.row]
cell.configureCell(fill)
return cell
}
在搜索模式下,您没有返回单元格,因此在搜索时看不到任何内容。请仔细查看这部分代码:
if inSearchMode {
let fill: Objects!
fill = filteredObject[indexPath.row]
cell.configureCell(fill)
} else {
let fill: Objects!
fill = allObjects[indexPath.row]
cell.configureCell(fill)
return cell
}
在搜索模式下,您没有返回单元格,这就是为什么您在搜索时看不到任何内容。这非常有效!一旦一个项目变得更大,错过这些小细节是很正常的,非常感谢。我有一个安全的习惯来防止这种情况发生,我通常在第一行将我的单元格出列,然后在最后一行返回,这样无论我犯了什么错误,单元格都会被返回,如果我搞砸了,可能只是返回了错误的内容。如果出于任何原因需要返回一个空的手机,我会调用return nil,而不是什么都不做,以表明我没有返回任何东西。这非常有效!一旦一个项目变得更大,错过这些小细节是很正常的,非常感谢。我有一个安全的习惯来防止这种情况发生,我通常在第一行将我的单元格出列,然后在最后一行返回,这样无论我犯了什么错误,单元格都会被返回,如果我搞砸了,可能只是返回了错误的内容。如果出于任何原因需要返回一个空单元格,我会调用return nil,而不是什么都不做,以表明我没有返回任何内容