如何在 swift 3 中过滤 UISearchBar 内的数组模型
how to filter array model inside UISearchBar in swift 3
我有一个这样的数组模型:
class Assess_order_med_model
{
var name:String!
var id:String!
init(name:String!,id:String!) {
self.name = name
self.id = id
}
}
我想根据 "id" 过滤我的数组。为此我正在这样做。
var filteredData = [Assess_order_med_model]()
override func viewDidLoad() {
super.viewDidLoad()
table_View.dataSource = self
table_View.delegate = self
searchBar.delegate = self
searchBar.showsCancelButton = false
self.table_View.allowsSelection = false
let array_vale1 = Assess_order_med_model.init(name: "New York, NY", id: "1")
self.array_model.append(array_vale1)
filteredData = array_model
}
现在我正在像这样过滤数组
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = searchText.isEmpty ? array_model : array_model.filter({(dataString: String) -> Bool in
// If dataItem matches the searchText, return true to include it
return dataString.range(of: searchText, options: .caseInsensitive) != nil
})
table_View.reloadData()
}
但它给我这样的错误:类型 Assess_order_model 的值没有成员范围 。
谁能帮我过滤时我做错了什么?
您的 array_model
包含对象 Assess_order_med_model
,像下面这样更改您的 textDidChange searchText
,
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
let searchString = searchText.trimWhiteSpace()
if searchString != "", searchString.count > 0 {
let filterData = array_model.filter {
return [=10=].id?.range(of: searchString, options: .caseInsensitive) != nil
}
}
}
这是 trimWhiteSpace
、
的通用方法
extension String {
func trimWhiteSpace() -> String {
let string = self.trimmingCharacters(in: .whitespacesAndNewlines)
return string
}
}
我有一个这样的数组模型:
class Assess_order_med_model
{
var name:String!
var id:String!
init(name:String!,id:String!) {
self.name = name
self.id = id
}
}
我想根据 "id" 过滤我的数组。为此我正在这样做。
var filteredData = [Assess_order_med_model]()
override func viewDidLoad() {
super.viewDidLoad()
table_View.dataSource = self
table_View.delegate = self
searchBar.delegate = self
searchBar.showsCancelButton = false
self.table_View.allowsSelection = false
let array_vale1 = Assess_order_med_model.init(name: "New York, NY", id: "1")
self.array_model.append(array_vale1)
filteredData = array_model
}
现在我正在像这样过滤数组
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = searchText.isEmpty ? array_model : array_model.filter({(dataString: String) -> Bool in
// If dataItem matches the searchText, return true to include it
return dataString.range(of: searchText, options: .caseInsensitive) != nil
})
table_View.reloadData()
}
但它给我这样的错误:类型 Assess_order_model 的值没有成员范围 。 谁能帮我过滤时我做错了什么?
您的 array_model
包含对象 Assess_order_med_model
,像下面这样更改您的 textDidChange searchText
,
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
let searchString = searchText.trimWhiteSpace()
if searchString != "", searchString.count > 0 {
let filterData = array_model.filter {
return [=10=].id?.range(of: searchString, options: .caseInsensitive) != nil
}
}
}
这是 trimWhiteSpace
、
extension String {
func trimWhiteSpace() -> String {
let string = self.trimmingCharacters(in: .whitespacesAndNewlines)
return string
}
}