Ios UISearchController更新搜索结果问题
我的问题是我在Swift 3中实现了Ios UISearchController更新搜索结果问题,ios,swift3,Ios,Swift3,我的问题是我在Swift 3中实现了UISearchController,当我尝试过滤时,它是一个简单的数组,但我的情况有点不同,我有一个数组,我从类中的SQLite数据库获取所有数据,因此它的类数组 managerControlClassArray包含类数组的所有内容 我想在updateSearchResultsdelegate方法中过滤内容,但这真的很难,而且我做了很多研究,在没有得到我想要的查询后,我发现StackOverflow非常有用,如果有人帮我,我将不胜感激 一些代码逻辑: man
UISearchController
,当我尝试过滤时,它是一个简单的数组,但我的情况有点不同,我有一个数组,我从类中的SQLite数据库
获取所有数据,因此它的类数组
managerControlClassArray
包含类数组的所有内容
我想在updateSearchResults
delegate方法中过滤内容,但这真的很难,而且我做了很多研究,在没有得到我想要的查询后,我发现StackOverflow非常有用,如果有人帮我,我将不胜感激
一些代码逻辑:
manager = ModelManager.getInstance().getAllManager()
// I get all the objects using singleton
//manager class has following data
id, title, designation, salary
//In TableView i want to display data by using that
let managerVar = manager[indexPath.row]
cell.textLabel.text = managerVar.title
编辑:
MasterTableViewController.swift
谢谢
再见。我们可以使用Swift内置的
过滤方法吗
func updateSearchResults(for searchController: UISearchController) {
self.tableView.reloadData()
self.filteredRecipeArray.removeAll(keepingCapacity: false)
guard let searchText = searchController.searchBar.text else {
return
}
let array = managerArray.filter {
return $0.id.range(of: searchText) != nil ||
$0.title .range(of: searchText) != nil ||
$0.ManagerDesignation.range(of: searchText) != nil
}
self.filteredRecipeArray = array
self.tableView.reloadData()
}
编辑
更新了最新Swift 3语法的答案那么你是如何过滤你的数组的,你能发布一些代码吗?另外,通过类,你是说你正在使用数组中包含的自定义对象吗?添加了codelogic。你是如何过滤简单数组的,你能为它添加代码吗?你发布的代码不足以找出问题的原因。我添加了我在tableviewcell中显示的代码!您好,谢谢您的回答,非常感谢您帮助我回答最后一个问题,因为我遇到了一个错误“类型'String'的值没有成员'rangeOfString'”,我只想通过标题在大写和小写中搜索。。。。。非常感谢swift 3,语法没有什么变化,仅此而已:return($0.title.range(of:searchText)!=nil)你太好了
class Manager: NSObject{
var id: String = String()
var title: String = String()
var ManagerDesignation: String = String()
}
func updateSearchResults(for searchController: UISearchController) {
self.tableView.reloadData()
self.filteredRecipeArray.removeAll(keepingCapacity: false)
guard let searchText = searchController.searchBar.text else {
return
}
let array = managerArray.filter {
return $0.id.range(of: searchText) != nil ||
$0.title .range(of: searchText) != nil ||
$0.ManagerDesignation.range(of: searchText) != nil
}
self.filteredRecipeArray = array
self.tableView.reloadData()
}